Hallo,
ich möchte bei einem Proxxon Bohrschleifer IBS/E per PWM die drehzahl
regeln.
Der Bohrschleifer soll allerdings auch ohne angeschlossenes PWM-Signal
funktionieren. Dazu habe ich folgendes gefunden:
http://bienonline.magix.net/public/mf70-drehzahl.html.
das PWM Signal erzeuge ich mit einem Arduino UNO (Mega382P) mit
angeschlossenem Poti als Sollwertgeber, wie folgt:
1
// the setup routine runs once when you press reset:
2
voidsetup(){
3
// initialize serial communication at 9600 bits per second:
4
TCCR1B=TCCR1B&0b11111000|0x03;
5
Serial.begin(9600);
6
}
7
8
// the loop routine runs over and over again forever:
9
voidloop(){
10
// read the input on analog pin 0:
11
intsensorValue=analogRead(A0);
12
// print out the value you read:
13
Serial.println(sensorValue);
14
analogWrite(9,sensorValue/4);
15
delay(1);// delay in between reads for stability
16
}
Leider ändert sich dabei die Drehzahl nicht.
Kann mir hier jemand auf die Sprünge helfen?
Gruß
Sebastian
MaWin schrieb:> pinMode(9, OUTPUT); ??
hab ich ergänzt hatt aber nichts gebracht.
Zur Info, eine an den PWM Ausgang angeschlossene LED wird gedimmt, also
scheint der PWM grundsätlich zu funktionieren.
Bereinigter Code:
1
intsensorPin=0;
2
intpwmPin=9;
3
intsensorValue=0;
4
5
voidsetup(){
6
pinMode(pwmPin,OUTPUT);
7
// initialize serial communication at 9600 bits per second:
8
TCCR1B=TCCR1B&0b11111000|0x01;
9
Serial.begin(9600);
10
}
11
12
// the loop routine runs over and over again forever:
Hi
>Hat den keiner eine idee wo das Problem liegen könnte?
Wie sieht deine Stromversorgung aus? Der originale Thyristorregler
funktioniert nur mit pusierendem Gleichstrom. Damit dürfte aber deine
PWM Probleme haben.
MfG Spess
Ich hatte überlesen das die PWM funktioniert.
Hast du die Zusatzschaltung schon getestet?
Ist dort auch der richtige Transistor drinnen mit entsprechender
Spannungsfestigkeit?
Hast du immer volle Drehzahl oder nur geringe?
spess53 schrieb:> Hi>>>Hat den keiner eine idee wo das Problem liegen könnte?>> Wie sieht deine Stromversorgung aus? Der originale Thyristorregler> funktioniert nur mit pusierendem Gleichstrom. Damit dürfte aber deine> PWM Probleme haben.>> MfG Spess
Hallo zusammen,
das PWM Signal wird mit einem Arduino mit seperater spannungsversorgung
erzeugt. Restliche schaltung sie Schaltplan.
Hubert G. schrieb:> Ich hatte überlesen das die PWM funktioniert.> Hast du die Zusatzschaltung schon getestet?> Ist dort auch der richtige Transistor drinnen mit entsprechender> Spannungsfestigkeit?
Transistor habe ich einen MPSA44 eingesetz wie in der Anleitung oben
beschrieben.
> Hast du immer volle Drehzahl oder nur geringe?
Ja läuft immer auf voller Drehzahl des Potis
Gruß
Sebastian
Das sieht dann aber so aus als würde deine Zusatzschaltung nicht
funktionieren, bzw. der Transistor ist immer durchgeschaltet.
Ist es sicher das beim OK auf Pin2 GND liegt?
Hubert G. schrieb:> Das sieht dann aber so aus als würde deine Zusatzschaltung nicht> funktionieren, bzw. der Transistor ist immer durchgeschaltet.> Ist es sicher das beim OK auf Pin2 GND liegt?
Laut Datenblatt ist Pin 2 die Kathode, dort lege ich GND an.
Ich messe zwischen Pin 1 (+) und Pin 2 (-) ca. 5V DC bei voller
Ansteuerung analogWrite Value = 255.
Wenn du wirklich 5V an Pin1 und 2 des OK misst, dann ist dieser defekt.
Dort darfst du nicht mehr als etwa 1,2V, die Durchflussspannung der Led
im OK, messen.
Den 1k Vorwiderstand hast du doch nicht vergessen?
Hubert G. schrieb:> Wenn du wirklich 5V an Pin1 und 2 des OK misst, dann ist dieser defekt.> Dort darfst du nicht mehr als etwa 1,2V, die Durchflussspannung der Led> im OK, messen.> Den 1k Vorwiderstand hast du doch nicht vergessen?
Hast recht Messe die Spannung natürlich schon am Eingang der Platine.
Lässt sich die Drehzahl mit dem original Poti noch ändern?
Wenn du sonst keinen Schaltungsfehler gemacht hast, kann nur der OK oder
der Transistor defekt sein.
Hubert G. schrieb:> Lässt sich die Drehzahl mit dem original Poti noch ändern?
Ja das geht noch.
> Wenn du sonst keinen Schaltungsfehler gemacht hast, kann nur der OK oder> der Transistor defekt sein.
Ja muss ich dann die Tage mal prüfen.
Sebastian G. schrieb:> Hubert G. schrieb:>> Wenn du wirklich 5V an Pin1 und 2 des OK misst, dann ist dieser defekt.>> Dort darfst du nicht mehr als etwa 1,2V, die Durchflussspannung der Led>> im OK, messen.>> Den 1k Vorwiderstand hast du doch nicht vergessen?>> Hast recht Messe die Spannung natürlich schon am Eingang der Platine.
So habe nochmal gemessen, Eingangsspannung am OK ~1,084V
Hubert G. schrieb:> Du kannst mal Pin 4 und 5 des OK kurzschließen, dann sollte sich die> Geschwindigkeit verringern.
Drehzahl gleich Null, der Motor ruckt nunmehr einmal kurz.
Hallo,
nun möchte ich mit einem Hallsensor die Drehzahl erfassen und damit des
PWM signal Regeln.
Das Erfassen der Drezahl funktioniert soweit ganz gut. Hier mein
Testcode:
1
volatileshortrpmcount;
2
volatileintstatus;
3
4
unsignedintrpm;
5
6
unsignedlongtimeold;
7
voidrpm_fun(){
8
rpmcount++;
9
if(status==LOW){
10
status=HIGH;
11
}else{
12
status=LOW;
13
}
14
//digitalWrite(statusPin, status);
15
}
16
17
voidsetup(){
18
Serial.begin(9600);
19
//Interrupt 0 is digital pin 2, so that is where the IR detector is connected
20
//Triggers on FALLING (change from HIGH to LOW)
21
attachInterrupt(0,rpm_fun,RISING);
22
23
rpmcount=0;
24
rpm=0;
25
timeold=0;
26
status=LOW;
27
}
28
voidloop(){
29
//Update RPM every second
30
delay(1000);
31
detachInterrupt(0);
32
rpm=30*1000/(millis()-timeold)*rpmcount;
33
timeold=millis();
34
rpmcount=0;
35
36
Serial.print(rpm,DEC);
37
Serial.print(" =U/min\n");
38
39
attachInterrupt(0,rpm_fun,RISING);
40
}
nun bin ich mir nur noch nicht ganz im Klaren wie ich den PID Regler
(http://playground.arduino.cc/Code/PIDLibrary) mit den Drehzahl-Werten
füttere, um dann damit das PWM Signal zu beeinflussen.
Der Drehzahl Sollwert soll für den ersten Test fix auf 5000 U/min
eingestellt werden.
Mein erster Versuch war folgendes:
1
#include<PID_v1.h>
2
3
// pins
4
intpwmPin=9;// PWM Output Pin
5
intrpmINT=0;// RPM Input Interupt (INT 0 pin 2)
6
7
//rpm variablen
8
volatileshortrpmcount;
9
volatileintstatus;
10
doubleSetpoint,Rpm,Output;
11
unsignedlongtimeold;
12
13
//Specify the links and initial tuning parameters
14
PIDmyPID(&Rpm,&Output,&Setpoint,2,5,1,DIRECT);
15
16
voidrpm_fun(){
17
rpmcount++;
18
if(status==LOW){
19
status=HIGH;
20
}else{
21
status=LOW;
22
}
23
//digitalWrite(statusPin, status);
24
}
25
26
voidsetup(){
27
//Triggers on FALLING (change from HIGH to LOW)
28
attachInterrupt(rpmINT,rpm_fun,FALLING);
29
30
rpmcount=0;
31
Rpm=0;
32
timeold=0;
33
status=LOW;
34
35
Setpoint=5000;
36
37
//turn the PID on
38
myPID.SetMode(AUTOMATIC);
39
40
pinMode(pwmPin,OUTPUT);
41
// set PWM frequncy for bin 9 to 31.250 kHz
42
TCCR1B=(TCCR1B&0b11111000)|0x02;
43
}
44
voidloop(){
45
detachInterrupt(rpmINT);
46
Rpm=30*1000/(millis()-timeold)*rpmcount;
47
timeold=millis();
48
rpmcount=0;
49
50
myPID.Compute();
51
52
analogWrite(pwmPin,255-Output);
53
54
attachInterrupt(rpmINT,rpm_fun,FALLING);
55
}
Nur ist der Versuch mit wenig Erfolg gekrönt, da nun nur sporadisch PWM
Signale erzeugt werd, die den Proxxon einmal kurz komplett auf 0 regeln.
Vielleicht kann mir hier ja jemand auf die Sprünge helfen.
Ich habe noch keine großen Erfahrungen mit Reglern gemacht, bzw.
vieleicht gehts ja auch noch einfacher?!
Gruß
Sebastian