Dachte ich auch schon. Bei ungefähr 50805:1 kommt man ja auf solche Gedanken. Gibt jedenfalls massig Drehmoment.. Ewigkeitsmaschine? ..
Geil-baut ihr nebenbei ne Ewigkeitsmaschine?
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Dachte ich auch schon. Bei ungefähr 50805:1 kommt man ja auf solche Gedanken. Gibt jedenfalls massig Drehmoment.. Ewigkeitsmaschine? ..
Ciao sagt der JoeamBerg
Da mein Großneffe sich leider in Richtung "warum selbst basteln wenn man was gekauft bekommen kann" entwickelt hat und ich nach einem Jahr immer wieder fragen keine Lust mehr hatte,
ist das Projekt eingeschlafen.
Da ich ab 4/2016 auch einen neuen Job habe und dort einiges zu erledigen ist.
Hatte ich selbst auch nicht mehr viel gemacht.
Letztes Weihnachten habe ich dann mal begonnen alle Schmierzettel zusammenzutragen und saubere Pläne daraus zu machen.
Aktuell habe ich mal folgende Pläne fertiggestellt (Und hoffe diese Jahr langsam wieder mal etwas daran machen zu können)
Die Odometrie
Die US-Sensoren (Schaltung 2 mal)
Den Linienfolger (auf einen Analogpin um Pins am Nano zu sparen)
Und die Bumper (Beim Asuro hat mir der 1M Widerstand nicht gefallen, da man da kaum noch die Zustände der Schalter unterscheiden kann, deshalb hier mit 10k und Komparator für den IRQ Eingang)
Eigentlich wollte ich diese eben hier einstellen, aber ich bin mal wieder beim Limit meiner Anhänge angekommen.
Ich werde wohl in den nächsten Wochen dann mal wieder meine alten Posts durchgehen müssen und wieder ein paar davon löschen um Platz zu schaffen.
Hallo i_make_it,
hast Du die Odometrie-Schaltung ausprobiert? Da ich auch an der HW-Vorauswertung des Quadratursignals interessiert bin und selber damit experimentiert habe, habe ich die Schaltung mal versucht zu simulieren. Im Simulationsprogramm war nicht das richtige Flip-Flop enthalten und ich mußte deshalb die S- und R-Eingänge noch mit Invertern auf richtigen Zustand bringen.
Den Pegelschrieb liest man von rechts nach links. Zuerst wird A zu high, danach B zu high.A zu low usw. Ab der Mitte findet eine Drehrichtungsumkehr statt. Ab da wird B vor A zu high.
Die kleinen Verzögerungen der Pulsflanken zu de A/B Flanken kommen durch Gatterlaufzeiten zustande.
Aber beiden Drehrichtungen macht "Direction" zwischendurch Pegelwechsel. Ist das richtig und wie würde man das im µC auswerten?
Gruß
Searcher
Geändert von Searcher (22.02.2018 um 19:06 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Hallo Searcher,
den Teil fürs Direction Signal hatte ich ungeprüft übernommen von:
https://uploadarchief.net/files/down...ndecoder01.jpg
Habs vorhin mal in LT-Spice simuliert. Funktioniert tatsächlich nicht.
Muß ich noch mal überarbeiten damit die erste steigende Flanke sicher zu einer Verrigelung führt.
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Ich muß mal in meinen alten Unterlagen zur Digitaltechnjik aus den 1980ern schauen.
Flankengesteuerte Flip-flops sind auf jeden Fall richtig.
Der Kanal dessen Flanke zuerst steigt, setzt und verriegelt das Setzen für den anderen Kanal.
Praktisch 2 Selbsthaltungen. und Nur wenn beide Kanäle den selben Pegel haben wird zurückgesetzt.
(Beim Richtungswechsel können ja gleichzeitig beide LOW sein oder beide High sein)
Es gibt sicher mehrere Lösungswege. Meine Lösung benutzt den Interrupt 0 oder 1 (evtl. bei mehreren Motoren/Encoderspuren zusätzliche Interrupts). Getriggert wird auf "jede Flanke" - und dann guckt man eben: ist das triggernde Signal high und das der zweiten Encoderspur low, oder hh, ll oder lh, und reagiert darauf. Ausserdem wird natürlich der Zeitablauf zwischen zwei Interrupts festgehalten und daraus die momentane Geschwindigkeit errechnet. Fehler durch verzögerten Interrupt entstehen natürlich. Siehe auch das Schema (vom Motortreiber archie):.. Aber beiden Drehrichtungen macht "Direction" zwischendurch Pegelwechsel. Ist das richtig und wie würde man das im µC auswerten? ..
......Bild hier
Meine Auswerteroutine sieht dann z.B. so aus (mega1284) :
Aus dem Stand von Iencdr0 leite ich die Geschwindigkeit (Drehzahl bzw. Umfangsgeschwindigkeit Rad) ab. Der Stand IencB0 ergibt mir den aktuell zurückgelegten Winkel resp. Weg.Code:// ============================================================================= = // === Nicht unterbrechbare ISR für EXT_INT0 auf mega1284 ================ = // Der Timer tmrE0 für Laufzeit des EXT_INT0 wird ausgelesen ISR(INT0_vect) // INT0 triggert auf RISING edge => { // => Wenn Aufruf, dann PORTD2 = high // Encoderticks Iencdrx nur hochzählen, IencBx rauf- od runterzählen Iz_diff0 = tmrE0; // Hier die Zeit (in x 50µs-tupsi) seit letztem ISR-Aufruf tmrE0 = 0; // Resetten ##>> IN der ISR ohne CLI/SEI möglich Iencdr0 ++; // Incrementiere Encodercounter, zählt NUR aufwärts if (IsBitSet (PINC, 2)) IencB0++; // Rad treibt vorwärts, math. negativ else IencB0--; // Rad treibt rückwärts, math. positiv } // Ende ISR(INT0_vect) // ============================================================================= =
Ciao sagt der JoeamBerg
Da ich durch das Summensignal eine Verdopplung der Impulse habe, aber keinen A- und B-Kanal, ist die Auswertung per Software nicht mehr drin.
und bei zwei Encodern spare ich halt mit der Vorverarbeitung 2 IRQ Pins (für einen Arm dann sogar 5 oder 6).
Das ist das Ziel.
Die Softwarelösung habe ich auch schon bei verschiedenen gekauften Bausätzen.
Und auch bisher bei meinen Selbstbauprojekten.
Diesmal will ich halt bewusst viel Vorverarbeitung machen.
Sprich es wird jetzt solange Quellen studiert und simuliert bis es funktioniert.
Das es geht weis ich, denn ich habe ein paar Haidenhein EXE'n bei denen es ein Direction Signal gibt.
Mein Fehler war halt, mich darauf zu verlassen das die gepostete Schaltung wirklich funktioniert und nicht selbst noch mal zu prüfen.
Dank Searcher ist das ja zum Glück schnell nachgeholt worden.
Lesezeichen