PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit CNY70



Da_Vinci13
17.02.2010, 12:27
Hi,
Zurzeit arbeite ich an einem optischen Regler für meinen roboter. Leider hab ich ein kleines Probelm:
Der CNY70 Sensor ist über den INT1 an meinem ATmega32 angeschlossen. Er misst mit Hilfe des 8 bit Timers den Abstand von Interrupt zu Interrupts damit die Drehzahl ermittelt werden kann. Jedoch macht er so viele interrupts, dass das nicht mehr normal ist. Eigentlich immer wenn er kann. Wenn er ca. 100 machen sollte macht er 2000 und so weiter. Beim anderen CNY70 mit der gleichen Beschaltung und dem gleichen Code geht es einwandfrei. Ich hab den CNY70 Sensor auch schon ausgewächselt, aber nichts hat sich geändert. Vielleicht hat jemand eine Ahnung an was das liegen könnte. Ich programmiere in Basic. Und wie gesagt bei dem einen geht es, also an der Beschaltung kann es nicht liegen... und gestern ist es auch noch bei dem gegangen bei dem es heute nicht mehr geht....

Liebe Grüsse!

Hubert.G
17.02.2010, 12:35
Das ist dann doch eher ein HW-Fehler, das Problem wird das Erkennen sein.

Da_Vinci13
17.02.2010, 12:54
OK.
Hat vielleicht jemand einmal ein ähnliches Problem gehabt, das einfach dauernd interrupts ausgelöst werden? Denn das ist ja überhaupt nicht normal... das muss ja ganz schnell von high auf low und von low wieder auf high wechseln....

Da_Vinci13
17.02.2010, 13:45
Hi,
Ich hab jetzt eine neue Erkenntinis gemacht und zwar:
Wenn ich die beiden Motoren abstelle, bzw das PWM und die Kanale, dann funktioniert der Sensor einwandfrei! Bisjetzt hab ich noch keine Lötbrücke oder sowas festgestellt, denn der Portd.3 ist ja gleich neben dem Portd.4 und der wird für die Motore gebracht....

Liebe Grüsse!

Vielleicht noch eine wichtige information:
Ich benutze das RN-Control mit dem Motortreiber LM293D

Hubert.G
17.02.2010, 14:41
Genügt es wenn du die Motoren weg gibst? Stromversorgung überprüft?

Da_Vinci13
17.02.2010, 15:08
Jep, es genügt wenn ich das PWM des linken abstelle, also das an Portd.4. Stromversorgung sollte in Ordnung sein... sobald der CNY70 Sensor und das PWM an Portd.4 angestellt ist gibt es Probleme... wie wenn das PWM an den Input von Portd.3 angeschlossen wäre und so ganz schnell viele interrupts auslösen würde. Aber das ist nicht der Fall, denn wenn ich den CNY70 wegnehme und die PWM anstelle, dann gibt es keine interrupts....
Ich hab jetzt weiter versucht, aber nichts hat wasgebracht... ich weiss wirklich nicht mehr was ich ausprobieren könnte oder an was es liegen könnte...

RP6conrad
17.02.2010, 20:45
Ursache kan das "burstenfeuer" sein von DC-motor. Das lasst sich verbesseren mit eine kapazität zwischen Motorgehause und jeden Anschluss zu loten. 2.2 pF keramik oder zo etwas. Google mal nach gleichstrom motor entstoren.

Da_Vinci13
27.02.2010, 19:19
Hi,
Ich hab den Motor schon entstört... allerdings mit 100nf von GND zu VCC des Motors und das Gehäuse hab ich direkt mit Masse verbunden, was auch die bessere Lösung bei PWM Motoren ist (besser als mit zwei 47nf Kondis zum Gehäuse). siehe hier:
http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung
ganz unten!

Grüsse!

Besserwessi
27.02.2010, 20:30
Was ist das für ein Motortreiber ? Die Störungen können auch durch Stromspitzen von einem schlechten Motortreiber kommen.

Treten die Störungen auch auf, wenn man einen Motor auf voller Drehzahl laufen hat, also ohne PWM ?

Ist eine Drossel (Induktivität) zwischen Motortreiber und Motor ? Ohne Drossel kann der Entstörkondensator nämlich Stromspitzen im Motorteiber verursachen und damit stören. Dann lieber einen kleineren Kondensator (z.B. 10 nF zur Entstörung), 2.2 pF sind aber definitiv zu klein. Wenn man das Motorgehäuse auf GND legt, muß das Gehäuse gegen den eigentlichen Motor isoliert sein. Meistens ist es das, aber nicht immer. Wenn gar nichts hilft, könnte man auch die andere Methode mit den 2 Kondensatoren probieren - HF Störungen sind nicht so leicht berechenbar.


Die Störungen können auf verschiedenen Wegen zum CNY kommen:
1) Als echte Funkstörungen, z.B. vom Bürstenfeuer
2) Über die Versorgungsspannung (Stromspitzen vom PWM)
3) Kapazitiv gekoppelt
4) Induktiv gekopplet
5) Über schlechte Masseführung

Erstmal sollte man versuchen die Störungen an der Quelle zu reduzieren. Die Kabel zu den Motoren sollten verdrillt und nicht unnötig lang sei. Außerdem ist etwas Abstand zu empfindlichen Sensoren gut.

Zusätzlich kann man dann ggf. noch etwas am CNY machen:
Darauf achten das die Kabel zum Sensor dicht zusammen verlaufen, ggf. auch ein geschirmtes Kabel. Gegen ganz kurze Pulse kann ein kleiner Kondensator (in der Größenordnung 100 pF) am Eingang des µC helfen.

Da_Vinci13
28.02.2010, 09:06
Danke für die ausführliche Antwort!
Also wenn ich den Motor einfach im leerlauf (ohne PWM) laufen lasse, dann gibts auch keine Probleme, also schätze ich mal es liegt nicht am Motor und dessen Beschaltung. Es geht nämlich nur bei einem CNY70 sensor nicht und zwar bei dem an PD.3 und der liegt direkt neben dem PWM Ausgang PD.4.
Was ich sonst vielleicht noch probieren könnte wäre den PIN an PD.3 aus dem Sockel zu biegen und den Sensor ausgang direkt dort hin zu "halten". Wenn es dann einwandfrei geht müsste es an einer brücke liegen, schätze ich einmal, obwohl ich immernoch keine Gefunden habe... wenn es dann immernoch nichtgeht, weiss ich auch nicht mehr wie weiter....
Ich hoffe nur der Pin bricht mir nicht ab....

Grüsse!

Da_Vinci13
28.02.2010, 09:56
hi,
Ich hab jetzt mal den uC aus dem Sockel genommen den PD.3 umgebogen, damit er aus dem Sockel ragt, dann den Ausgang des CNY70 Sensors an den Pin gehalten und siehe da es geht einwandfrei! Aber sobald ich den PD.3 wieder in den Sockel stecke kommen wieder riesige Zahlen!
Wenn ich jetzt das Board Auf brücken überprüfe (uC aus dem Sockel), dann gibt es keine Brücke zwischen PD.3 und PD.4. Und wenn ich jetzt den uC in den Sockel lege und und dann schaue ob es so eine Brücke gibt, gibt es zwar eine (Ich überprüfe das mit einer LED), wie bei allen anderen Ports, aber bei PD.3 und PD.4 ist die Verbindung schwächer, bzw. die LED leuchtet weniger stark. Ich hab wirklich keine Ahnung mehr an was es liegen könnte.
Übrigens verwende ich einen L293D Motortreiber auf dem RN-Control

Grüsse!

RP6conrad
28.02.2010, 10:32
Verwenden sie eine Pulldown an eingang von Interrupt ? Wie ist eigenlich der CNY 70 geschaltet ? Scheinbar wird da den PWM Ausgang eingekuppelt nach der INT Eingang. Sind die interne Pulldown von µ verwendet ?

oberallgeier
28.02.2010, 10:36
... CNY70 Sensor ist über den INT1 ... macht er so viele interrupts, dass das nicht mehr normal ist ...
... es genügt wenn ich das PWM des linken abstelle ... sobald der CNY70 ... gibt es Probleme ...Bei meinen Drehzahlmessungen habe ich Gabellichtschranken eingesetzt. Ich hatte sowohl bei einem Testaufbau als auch bei Kontrollen IM ZIELSYSTEM darauf geachtet, dass ich saubere, ausreichend deutliche Signalgänge erreiche - sprich: dass mein Sensor dem Controller nicht irgendwelche Pegel an der Grenze zwischen Niemandsland und high anbietet. Ein Oskar ist in solchen Fällen fast unbezahlbar/unersetzlich. Dabei ist dieses "GUT"-Ergebnis (https://www.roboternetz.de/phpBB2/viewtopic.php?p=415959&sid=7463ebd8343a6b380ee679b0d5b3c2a4#415959) entstanden, dagegen unbrauchbar ist dieser (https://www.roboternetz.de/phpBB2/viewtopic.php?p=415544&sid=7463ebd8343a6b380ee679b0d5b3c2a4#415544) Signalgang. Der gute Signalgang zeigt einen Lowpegel bei 0,5 V und kommt bei high sicher auf 4,5 V. Das war nicht immer so . . . *ggg* - daher auch mein Verdacht zu Deiner Hardware.

Ich kann mir vorstellen, dass Dein Sensor in manchen Fällen gerade zwischen low und high - nach Definition für den Controller - ausgibt, und manchmal reichts eben nicht für die ganze Dauer der Rampe, es gibt höherfrequente Spannungseinbrüche im System und der Sensor zittert um den Schaltpunkt des Controllers. Und der Controllereingang zittert mit - der Lump.

Vorschlag:
a) Analyse des Signalgangs mit dem Oszilloskop - der bequemste Weg
b) Wenn Du keinen Oskar hast: Schaltpegel mit dem Multimeter prüfen - das geht natürlich nicht bei den üblich schnellen Schaltfrequenzen einer Drehzahlmessung.

Viel Erfolg.

Da_Vinci13
28.02.2010, 10:50
Hi,
Aber ich bin mir ziemlich sicher, dass es nicht an dem liegt, denn ich hab vor etwa einem halben Jahr genau mit der selben Beschaltung eine Drehzahlregelung gemacht, dort ist es auch gegangen, hab dort eben nur mit einem Motor gearbeitet. Dass das Probelm nicht an der Hardware liegt, weiss ich auch, denn erstens hab ich zwei mal die gleiche Beschaltung und zweitens hab ich den Sensor auch mal ausgewechselt und das hat nichts geändert. Als ich es vor einem halben Jahr probiert habe, hab ich es mit einem Schmitt-trigger gemacht, an das ergebnis änderte sich nicht.

Grüsse!

oberallgeier
28.02.2010, 10:56
... Aber ich bin mir ziemlich sicher, dass es nicht an dem liegt ...Wie schön für Dich, dann ist ja alles bestens.

Besserwessi
28.02.2010, 11:26
Wenn das Problem tatsächlich die Einkopplung von der benachbarten Leitung direkt am µC ist, kann der kleine Kondensator (z.B. 22 pF oder 100 pF) am Pin PD3 helfen.


Man sollte wirklich mal kontrolieren welche Spannung am Eingang anliegt, und ggf. den Widerstand anpassen. Es kann sein, das der Eingang besonders empfindlich ist, weil der Pegel sehr nahe an der Schaltschwelle liegt. Ein bischen unerschiedlich können die CNY70 sein, vor allem wenn sie aus einer anderen Charge kommen. Auch die Abstände haben einen starken Einfluß.

Da_Vinci13
28.02.2010, 18:07
... Aber ich bin mir ziemlich sicher, dass es nicht an dem liegt ...Wie schön für Dich, dann ist ja alles bestens.

Neee!! Nichts ist bestens. Es funktioniert ja nicht.... nur weil es nicht daran liegt, heisst es nicht, dass alles bestens ist! ;)
Jetzt macht sogar der RS232 wieder Probleme, also hab ich jetzt während einem Problem ein Problem. ;)

@besserwessi:
Ich hab jetzt mal mit dem CNY70 vom Meter entfernt (ca. 10cm) und es hat immer noch viel zu viele Interrupts gegeben.... leider....
Danke aber für dein Einsatz!



Grüsse!

Martey87
05.03.2010, 12:04
Hallo Leute,

da ihr grade so schön üner den CNY70 sprecht, hab ich da mal ne Anfängerfrage. Was für ne Reichweite hat der Sensor? Hab mir das Datenblatt mal angesehen, und da steht immer nur was von 0,3mm. Ist diese maximale Distanz richtig? Weil das wäre ja fast nix.

Schon mal besten Dank im vorraus und Grüße

Hubert.G
05.03.2010, 15:18
Die angegebenen Daten sind bei einer Entfernung von 0,3mm.
Wenn du im Datenblatt weiter nach unten gehst, siehst du in den Diagrammen das Entfernungen bis zu 10mm durchaus möglich sind. Es kommt sehr viel auf die reflektierenden Eigenschaften des Materials an.