PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega spinnt beim Zählen von Impulsen



marius2
15.11.2015, 18:00
Hallo

Ich habe ein Problem bei meinem Atmega8 der die Impulse der Gabellichtschranke ( Vishay TCST 2103) zählen soll. Ich messe die Drehzahl der Antriebsmotoren meines Roboters über eine Schlitzscheibe und eine Gabellichtschranke. Die Impulse kommen auf den Hardwareinterrupteingang (INT0) und werden von der Interruptroutine verarbeitet.
Das Problem tritt auf, sobald die Motoren laufen. Es werden dann viel zu viele Impulse gezählt (mehrere hundert pro Sekunde). Drehe ich das Rad von Hand, stimmt die Impulszahl. Testweise habe ich die Gabellichtschranke ausgebaut und den Lichtstrahl unterbrochen. Wenn die Motoren dann laufen, werden auch mehrere hundert Impulse in der Sekunde gezählt.

Die Software funktioniert einwandfrei, ich habe das mit einem Impulsgenerator getestet. Stehen die Motoren, ist alles in Ordnung. Laufen sie, sind es wieder zu viele.

Die Motoren habe ich jeweils mit einem 100 nF Kondensator an den Anschlüssen entstört. Kann es sein, dass das zu wenig ist und deshalb das seltsame Verhalten verursacht wird?

RoboHolIC
15.11.2015, 21:01
Ist die Motorsteuerung mit Freilaufdioden versehen?
Hat der Controller inkl. Lichtschranke(n) eine eigene Spannungsregelung? Günstig ist es auch, diese mit Diode und mehreren hundert µF zu puffern. Dann können eventuelle Spannungseinbrüche durch den Motorlaststrom nicht die Steuerelektronik beeinflussen.
Ist die falsche Zählrate eventuell sogar gleich der PWM-Frequenz (ich geh mal von PMW aus) ?
Je nachdem, wo die 100nF genau angeschlossen sind, kann das bei PWM.Betrieb auch schon zu viel des Guten sein.

marius2
15.11.2015, 22:06
Hallo

Freilaufdioden sind vorhanden
Der Controller hat eine eigenen Low-Dropout-Spannungsregler. Die 5V-Seite ist mit einem 100 µF Kondensator gepuffert. Die Zählrate ist nicht gleich der PWM-Frequenz und schwankt auch. Die 100nF sind direkt an den Anschlussfahnen der Motoren angelötet.
Danke für eure Hilfe.

Gruß Marius

RoboHolIC
15.11.2015, 23:17
Dann wird's langsam knifflig. Ein Fall für ein Oszilloskop.

Gibt es einen Schaltplan? Manches wäre doch einfacher zu sehen anstatt es einzeln erfragen zu müssen.
Vielleicht auch ein Bild vom Aufbau?

Ist evtl. der Ausgang der Lichtschranke zu hochohmig und damit anfällig dafür, von einem Störsignal überlagert zu werden? Ist ein Arbeitswiderstand für den Phototransistor vorhanden?
Gemeinsamer Massepunkt vorhanden für Controller und Motor?
Verkabelung des Motors räumlich getrennt von der des Sensors?

oberallgeier
16.11.2015, 08:36
Dann wird's langsam knifflig. Ein Fall für ein Oszilloskop ..Genau. Ich hattes selbst schon Probleme mit Gabellichtschranken. Oft war die suboptimale Beschaltung der Grund z.B. dafür, dass die High´s und die Low´s ziemlich phantasievoll und eifrig ihre Pegel änderten - oder dass der eine oder andere Pegel von der Lichtschranke an der Grenze seiner Definition abgeliefert wurde. Und dann ist der Controllereingang mitunter überfordert, wenn z.B. Input High Voltage 0.6Vcc unterschreitet (siehe im Datenblatt unter Electrical characteristics/DC Characteristics.

Allerdings kommt mir die Beschreibung am Beginn eher vor wie eine Art "Prellen". Ähnliches hatte ich allenfalls bei schlampigen Testaufbauten bzw. dürftig gefertigten Encoderscheiben gesehen. Aus meiner wirklich ersten Anfangszeit stammt dann die absolute Horrorlösung: in der ISR die Zeit seit dem letzten Interrupt prüfen - und wenn die zu kurz ist, dann mit return bis zum nächsten Signal warten :-/ (brrrrrrrrrr - ich weiß).


.. Der Controller hat eine eigenen Low-Dropout-Spannungsregler ..Die Frage jetzt klingt schon leicht unverschämt : ist GND(Controller) mit GND(Lichtschranke) verbunden ?

marius2
17.11.2015, 17:31
Hallo

Danke für eure Beiträge. Das Problem ist, das auch die Impulse aus einem Taktgenerator falsch gezählt werden, wenn der Motor läuft. Wenn die Motoren stillstehen, zählt der Controller die richtige Anzahl von Impulsen


Gruß Marius

RoboHolIC
17.11.2015, 18:52
Das Problem ist, das auch die Impulse aus einem Taktgenerator falsch gezählt werden, wenn der Motor läuft. Wenn die Motoren stillstehen, zählt der Controller die richtige Anzahl von Impulsen
So weit warst du ja bereits beim Eröffnungsbeitrag. Und mit GaLi + Encoderscheibe OHNE Motoren ist die Zählung ja auch in Ordnung, richtig?
Dann sind eindeutig die Motoren die primären Verursacher. Das können sein
- vom Motorstrom bewirkte Spannungseinbrüche auf der µC-Versorgung
- GND nicht sternförmig verdrahtet
- Schalt- bzw. Kommutierungsstörungen, die der Motor auf die µC-Versorgung drückt
- Störungen, die dem Lichtschrankensignal überlagert sind.
- fehlende oder zu kleine Abblockkondensatoren am µC
Mehr wahrscheinliche Störungsmechanismen fallen mir nicht ein.

Eine Frage noch:

Wenn die Motoren stillstehen
Wodurch stehen sie still?
- Motoransteuerung im Code ausgeblendet, also abweichender Code
- Motoren blockiert (eher unwahrscheinlich, aber einen vorsichtigen Versuch wert)
- Motoren gar nicht angeschlossen, Code tut aber so als ob

Schön wären jetzt
- ein Schaltplan der gesamten Schaltung inkl. Stromversorgung
- der Code (AVR-Kenner vor!)
- Messung der statischen H- und L-Spannungen, die die Lichtschranke an den Interrupteingang liefert
- eine genaue Typbezeichnung des verwendeten Controllers
- das Versuchsergebnis mit getrennter Controller- und Motorversorgung (GND_µC und GND_Mot verbunden)

sonst drehen wir bald die nächste Runde im Kreis, aber nicht alle werden diese zweite Runde mitgehen.

Ich wünsche Dir erkenntnisreiches Experimentieren.

Gruß
Christian.

Peter(TOO)
17.11.2015, 23:28
Hallo Marius,

Schön wären jetzt
- ein Schaltplan der gesamten Schaltung inkl. Stromversorgung
- der Code (AVR-Kenner vor!)
- Messung der statischen H- und L-Spannungen, die die Lichtschranke an den Interrupteingang liefert
- eine genaue Typbezeichnung des verwendeten Controllers
- das Versuchsergebnis mit getrennter Controller- und Motorversorgung (GND_µC und GND_Mot verbunden)

sonst drehen wir bald die nächste Runde im Kreis, aber nicht alle werden diese zweite Runde mitgehen.
Es fehlt noch ein Foto vom Aufbau!
Die tatsächliche Verdrahtung z.B. der Masse geht nicht aus dem Schaltplan hervor, kann aber den Unterschied zwischen spinnt und funktioniert ausmachen!

MfG Peter(TOO)