Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Asuro-Kurver,
hab die Encoder direkt am Motorritzel angebracht,
als Reflexsensor verwende ich CNY70. Aus Platzgründen hab ich die CNY70
"oberflächen" montiert auf einem dünnen (ca 0,5mm ) Pertinaxplättchen.
Die MY_ASURO_ .. Werte liegen bei etwa 220 +-10. Um Beeinträchtigung von den Originalsensoren zu verhindern, hab ich die ursprünglichen LED's von der Versorgung abgetrennt.
Die Regelung scheint wohl besser zu funktionieren ( ich bekomme jetzt ca 3,33 x soviele TIKs ( 5 fache Zahnradübersetzung , aber nur 2x4 Segmente auf Encoderscheibe anstelle 2x6) pro Zeiteinheit)).
Nur klappt bei mir die Entfernungssteuerung (noch ?) nicht, obwohl ich die
Fahrwegberechnung auch angepasst habe ( 0,58 mm/Tik gegenüber ca 1,9 mm/Tik bisher), Asuro fährt ca 2 x soweit wie berechnet/vorgegeben.
Gruss
mausi_mick
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen.
@Richard
Guter Tip für hääääßßßßliches Windoof-Verhalten!
Hi mausi_mick,
ja, inka hat da schon Panik bekommen, als wir ihm die 3680 (oder so ähnlich) vielen Bohrlöcher vorgerechnet hatten.
Ich bin mir recht sicher, dass du erst einmal keine Timer zum Registrieren der Löcher bei einer Gabel benötigen würdest.
Schwieriger ist es, wenn die beiden Seiten irgendwie per ISR bearbeitet werden sollen, beide in den Asuro zu bekommen.
Die beiden Eingänge zum ADC (0 und 1) für die ODO-Sensoren können leider nicht per Interrupt überwacht werden.
Der INT1-Eingang wird durch die Tasten belegt, und sollte meiner Meinung nach nicht abmontiert werden.
Somit bleibt nur der eine INT0-Eingang übrig.
Meine Idee zur Schaltplanschmiererei ist folgende:
Unter der Annahme, dass die Differenz zwischen Hell-/Dunkelsignal so gut ist, wie inka es gezeigt hat, kann man versuchen ein logisches OR-Glied aus den beiden Dioden (oberhalb vom AVR gezeichnet) zu bilden um beide Rad-Seiten zusammenzufassen. Der Widerstand dazu sollte recht groß gegenüber den im Asuro eingebauten R18 und R20 sein, um möglichts wenig Einfluß zu nehmen.
Somit kann am INT0-Eingang ein Interupt ausgelößt werden, wenn einer der beiden Räder meint ein Loch zu sehen.
Die ISR-Funktion dazu liest dann einfach die ADC0/1-Ports als BIT-Wert ein und schon kann dort gezählt werden.
Auch hier sollte man natürlich darauf achten, dass nur dann hochgezählt wird, wenn ein Bitwechsel erfolgt ist.
Das einziege (Määäh), was dann nicht mehr funktionieren würde ist dann die rote Seite der Status-LED, da die AVR-Leitung ja nun als Interrupt-Eingang zu konfigurieren ist.
Ob die beiden Dioden mit dem Widerstand zusammen, bzw. der Spannungseinbruch bei beleuchtetem T11/T12, tatsächlich ausreichen um ein LOW-Signal am INT0-Eingang zu erzeugen, kann ich allerdings nicht sagen.
Gruß Sternthaler
Und da die Schaltplankritzelei:
Liste der Anhänge anzeigen (Anzahl: 3)
hi Curver,
hab heute mal die HW aufgebaut inclusive Schmitttrigger (74HC132).
Erste Messungen erfolgsversprechend. Bei dem verwandten Rad mit den 4 Bohrungen bekommt man halt relativ schmale Impulse. Die Flankensteilheit ist bei den hohen Drehzahlen an der Motornabe noch relativ gut, sodass man wohl auf den Schmitttrigger verzichten kann.
Ich muss die Positionierung der Gabel-LS noch verbessern und stabilisiern. Taucht die Gabel nicht tief genug ein, schalten die Transistoren nicht mehr voll durch und es gehen dann eventuell TIKs verloren.
Ich betreibe die IR-LEDs mit ca 10mA (in Reihe), dafür sieht das Signal auf dem Oskar bei exakter Positionierung der LS sehr gut aus.
Die Software arbeitet z.Zt. noch mit den 8-Bit-Wandleren.
Im Anhang noch ein paar Foto's von Platine und Aufbau.
Gruß
mausi_mick
Liste der Anhänge anzeigen (Anzahl: 3)
Hi Curver,
hab die Halterung für die Gabel-LS etwas verbessert, sodass Abstand Lochscheibe zu Gabel-LS fixiert ist und Löcher auf Höhe der Sensoren.
Anbei noch ein paar Fotos zum Aufbau und Messergebnis bei MotorSpeed (255,255) und 4-Loschscheibe an Motorwelle/Ritzel.
Die Einstellung am Oskar waren 1V / 1ms.
Das Signal sieht gut aus, den Schmitttrigger (74HC132) brauch ich wohl nicht.
Gruss mausi_mick
Liste der Anhänge anzeigen (Anzahl: 1)
hi curver,
hab den Code noch etwas verbessert und beim Drehen auf der Stelle
die Extrarunde erst bei Winkeln unter 20° spendiert.
Der Absolutwert von speed wird nicht als Sollvorgabe verwendet, intern wird mit einer mittleren Geschwindigkeit von 170 gearbeitet.
Wenn man unterschiedliche Geschwindigkeiten vorgeben will, muss man auch die Bremswege entsprechend anpassen, da sonst ASURO aufgrund seiner Trägheit z.B. bei höheren Geschwindigkeiten über sein Fahrziel hinausfährt.
im Anhang noch ein Beispiel Code (GoTurn2)
Liste der Anhänge anzeigen (Anzahl: 1)
hi,
noch ein Vergleich mit der Original-GoTurn()-Funktion:
beim Abfahren einer vorgegebenen Strecke (Aussenkontur vom Haus vom Nikolaus mit 1000mm Basislänge) komme ich bei relativ niedriger Geschwindigkeit bei meiner Programmversion (GoTurn2()) etwa auf 100 mm an den Startpunkt heran, während bei der original GoTurn( ) Funktion der Abstand meist grösser als 300mm ist mit recht grosser Streuung.
Da die Streuung bei meinem Programm sehr klein ist, könnte man
durch Anpassung der Werte Tick / mm Fahrweg bzw. Tick / Grad
zumindest bei kleinen Geschwindigkeiten die Genauigkeit noch erhöhen.
Der verbleibende Rest kommt vermutlich durch Rutscheffekte und dynamische / träge Verhalten des Motors zustande.
Als Anhang noch das Vergleichsprogramm
Gruss
mausi_mick
PS: Ich habe in den H-Brücken die die BC3.. Transistoren durch ZETEX-Transistoren ersetzt, die deutlich niedrigere Collector-Emitter-Sättigungsspannungen haben und so ein sicheres Anfahren mit MotorSpeed(80,80) (bei vollem Akku ) ermöglichen.