-
-
Ist bestimmt ganz einfach habe aber einen Knoten im Kopf :-)
Hallo ,
nachdem es Jetzt mit der Tastatur und alles geklappt hat .
Habe ich jetzt ein kleines problem .
Und komme gerade nicht vorran .
Also ich möchte Messen wie lange es dauert bis sich eine Welle genau
einmal gedreht hat .
Dafür habe ich mir einen Halter gebaut wo 2 Hallsensoren genau 20° auseinander sind .
Und darüber Dreht sich ein Magnet .
Jetzt möchte ich das der Timer Startet wenn der Magnet den ersten Sensor Passiert
und aufhört wenn er am zweiten vorbei kommt.
Das Start und Stop signal würde von ADC0 und ADC1 kommen .
Und dann soll er alles auf das Display schreiben.
DAs ich das Ganze mit den Timern mache ist klar .
Aber ich kriege es nicht in den Kopf wie das gehen kann.
Oder wie das Programm aussehen muß.
Hat da jemand einen vorschlag ?
Oder eine Programm wo soetwas schon Realisiert wurde ?
Oder eine Seite wo es anhand eines Beispiels erklärt wird?
Hab nochmal etwas Überlegt und habe folgende Idee dazu
Die ganzen Konfigurationen überspringe ich mal .
DO
If adc_0 = 10 then
Start timer1
end if
if adc_1 = 10 then
Stop timer1
endif
loop
Kann das so gehen ?
Und wo finde ich dann den wert ?
Gruß
Holger
-
Erfahrener Benutzer
Roboter Experte
Das mit den 2 Sensoren hat ein Häkchen:
So ein Hallsensor schaltet ja schon durch, wenn der Magnet auf eine bestimmte Distanz herankommt (d.h. das Feld stark genug ist). Wenn Deine beiden Sensoren diesbezüglich Streuungen aufweisen, werden die beiden Signale nicht exakt eine 20°-Drehung der Welle reproduzieren.
Außerdem geht´s auch mit weniger Hardware - ich hab´ gerade eine Drehzahlregelung für eine Segelflug-Modellwinde mit nur einem Hallsensor realisiert. Das Sensor-Signal ist auf einen Interrupt-Eingang gelegt und ein Timer läuft kontinuierlich. In der Interrupt-Routine wird der aktuelle Timer-Stand an eine Variable übergeben und der Timer auf null gesetzt. Je langsamer die Welle dreht, umso weiter kommt der Zähler bis zum nächsten Sensor-Signal - mit etwas Mathematik lässt sich damit aus dieser Variablen die Drehzahl errechnen.
Klaro?
-
Hallo ,
Danke für die Antwort
Das die Sensoren eine gewisse Streuung haben muß ich leider in Kauf nehmen .
Es soll mal eine Motosteuerung werden die alle 60°
auf den nächsten Stator schaltet da ich aber keine
werte habe wie Lange er für die 60° braucht
kann ich den Motor leider auch nicht Drehen lassen .
Mein Gedanke war jetzt diverse male die 20° grad zu
messen und dann anfangen mich an einen
wert Herran zu arbeiten .
Sobald ich den Motor soweit habe das er
eine komplette umdrehung macht .
Werde ich die messung umstellen auf nur einen Sensor .
Und dann bekomme ich ja Werte wie Lange er braucht für 360°.
Aber wie Gesagt ich Stehe auf dem Schlauch
wie ich das Realisieren kann .
Wie sieht denn dein Programm aus ?
Oder wie kann man das machen .
Ich muß ja am ende einen Wert haben .
Mit dem ich Rechnen kann .
Kann das mit meinem Gedanken nsatz so Funktionieren ?
Gruß Holger
-
Erfahrener Benutzer
Roboter Experte
O.k., dann brauchst Du 2 Interrupts. INT0 setzt den Timer auf 0 und startet ihn, INT1 stoppt ihn.
Die Zeit, die zwischen den beiden Interrupts vergangen ist, errechnet sich aus (Zählerstand Timer * Prescale) / Quarzfrequenz.
Hast Du denn schon Plan von Timerm & Interrupts??
-
Hallo ,
Ja.
Timer und Interrupts habe ich mir auch schon angeschaut
Und kleine Sachen mit gemacht .
Habe auch schon Erfolgreich mit der Pwm gearbeitet .
Muß aber dazu Sagen das ich erst vor ca. 6 Wochen angefangen habe
mit dem Programmieren .
Und dann Stehe ich manchmal auf dem Schlauch wie das so im Zusammenhang geht .
Ich bin auch sehr bestrebt alles zu verstehen
was da Passiert wenn der Prozessor etwas macht .
Bascom macht es einem zwar sehr leicht
schnell große erfolge zu haben aber man wil ja auch wissen was da
so alles hintersteht und was da so alles passiert .
Deswegen komme ich nicht ganz so schnell vorran beim Programmieren.
Gruß Holger
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen