Anderer Kram:
FĂŒr eine Arbeitsspindel einer FrĂ€smaschine soll ein LED-Drehzahlmesser her. Ordentlich hell, einigermaĂen groĂe Ziffern, Abtastung Zahnrad mit 9 ZĂ€hnen mittels Reflexkoppler, Hallsensor o.Ă€. Neubau, etwas maĂgeschneidertes gibt's nicht so recht. Ein paar VQE13 lagen noch herum, die weg mĂŒssen.
Firmware fehlt noch.
Hinweis: Es gibt keinen Helligkeitsverlust durch Charlieplexing! Im Internet herumgeisternde Anleitungen, wonach nur 1 LED gleichzeitig leuchten kann sind schlichtweg falsch! StrombegrenzungswiderstÀnde werden genauso angeordnet wie beim konventionellen Multiplexing, nur bei antiparallel verschalteten Zweifarb-LEDs geht das nicht. Die Emitter der entgegengesetzten Transistoren kann man verbinden oder unverbunden lassen, hier bspw. Netz K1 mit A0.
Siehe auch: Digitalvoltmeter vierstellig mit ATtiny13 und V40511. Statt ATtiny13 ein ATtiny24 mit Resonator, fertig ist der genaue Drehzahlmesser, der auch den Dezimalpunkt steuern kann. Der V40511 erspart die vielen npn-Transistoren und reduziert die nötige Anzahl an Mikrocontroller-Pins. In diesem Fall eignen sich auch mehrstellige Multiplexanzeigen mit vorgegebener Matrix, etwa diese oder jene. Hauptsache âgemeinsame Katodeâ.
Man kann hier sogar die StrombegrenzungswiderstĂ€nde R1..R7 weglassen, da die VQE13 ohnehin recht gefrĂ€Ăig sind und der V40511 nicht allzu ergiebig. Eine Helligkeitseinstellung erfolgt dann sinnvollerweise durch Variation der Betriebsspannung oder Anpassung der Firmware (kĂŒrzere Leuchtphasen).
SchlieĂlich wurde ich vor vollendete Tatsachen gestellt, neue LED-Anzeigen und unpassende Platine vermutlich aus der Elektronik-Apotheke. Da die Anzeigen trotz ihrer GröĂe nur wenig Strom benötigen, kann auf die Hi-Side-Transistoren verzichtet werden. Jeder Mikrocontroller-Ausgang liefert so 24 mA, auf die 4 Anzeigen verteilt sind es durchschnittlich 6 mA. Auf Transistoren auf der Low-Seite kann nicht verzichtet werden, diese leiten fĂŒr Portpins unzulĂ€ssige 6 mA Ă 8 = 48 mA ab, möglichst ohne stromabhĂ€ngigen Spannungsabfall. Dazu ein Wirbelstromsensor mit der Bezeichnung Turck 4609840. Immerhin, dieser kann 3 kHz, will aber 10..30 V. Also besser einen Festspannungsregler und eine Verpolschutzdiode spendiert, fĂŒr alle FĂ€lle. Mit seinem âNPN-Ausgangâ kann dieser direkt mit dem Mikrocontroller verbunden werden. Anzeige und Sensor können so gemeinsam bspw. von 24 V oder besser 12 V gespeist werden. Die maximale Stromaufnahme der Anzeige liegt bei 50 mA, das macht im Festspannungsregler IC2 bei 24 V maximal 1 W Verlustleistung (immerhin).
Oh, Hoppla, Reinfall
Firmware:
Beim Einschalten meldet sich die Firmware mit einem kurzen Lampentest,
d.h. es wird kurz angezeigt.
Die Frequenzmessung benutzt den 16-Bit-Timer1 mit Capture = das hardwaremĂ€Ăige Festhalten
des ZĂ€hlerstandes mit einer Signalflanke an ICP = PA7.
Mit dem Ăberlaufinterrupt, nach einem festen Zeitintervall von etwa 150 ms,
nimmt die Rechenroutine die Anzahl der Capture-Ereignisse und subtrahiert den
Capture-Wert der vorhergehenden Frequenzmessung vom letzten Capture-Wert.
Mit diesen beiden Zahlen lĂ€sst sich in einer Multiplikation (32 bit Ă 16 bit â 64 bit) und Division
(64 bit Ă· 32 bit â 32 bit â 32 bit)
fĂŒr einen weiten Frequenzbereich die Frequenz mit hoher Genauigkeit berechnen.
Wohlgemerkt, ohne auf das Messergebnis 1 s warten zu mĂŒssen.
Dadurch erfolgt die Aktualisierung bei Eingangsfrequenzen bis hinunter zu 8 Hz
mit einer festen Aktualisierungsrate von 7,5 Hz entsprechend 120 ms.
Bei kleineren Frequenzen bis 1 Hz fÀllt die Aktualisierugsrate auf die Eingangsfrequenz,
bei noch gröĂeren PulsabstĂ€nden wird angezeigt.
Der Messbereich erstreckt sich von 1 Hz bis 180 kHz bei einem Anzeigebereich
von U/min bis (theoretisch) utopischen kU/min,
praktisch U/min bei 900 Hz Eingangsfrequenz.
Hieran sieht man dass die Ănderung der ZĂ€hnezahl des Aufnehmers (hier 9)
in weiten Grenzen leicht möglich ist.
Um Wettlaufsituationen zu vermeiden muss der Capture-Wert in der Capture-ISR ausgelesen werden,
gemeinsam mit dem HochzÀhlen des FlankenzÀhlers.
Die Divisionsroutine der Laufzeitbibliothek (64 bit Ă· 32 bit)
verbraucht einen GroĂteil des Flash-Speichers und der Rechenzeit,
aber beides ist selbst auf dem allerkleinsten ATtiny24 noch reichlich.
Um das Registerretten in den ISRs nicht ausufern zu lassen,
arbeitet die rechenintensive Routine im Hauptprogramm.
Dieses wartet in einer for(;;) sleep_cpu();
-Schleife
auf das ZĂ€hlerĂŒberlauf-Ereignis.
Die Frequenzanzeige erfolgt
Timer0 kĂŒmmert sich um das Multiplexen der LED-Anzeige und ist durch Charlieplex nur etwas komplexer. Auf bis zu 9 Dezimalstellen kann die Anzeige erweitert werden ohne weitere Leitungen und damit einen gröĂeren Mikrocontroller zu benötigen. Um auf den Capture-Interrupt schnell reagieren zu können lĂ€uft die Anzeige-ISR bei freigegebenen Interrupts. Da bei extrem hoher Interruptlast (ĂŒber 180 kHz) durch den höher priorisierten Timer1 der Timer0 nicht mehr zum Zug kommt und sich der Anzeigewert einbrennen könnte, sorgt der Watchdog in diesem Fall fĂŒr den Mikrocontroller-Reset.
Symptom: âBrummen und Bratzelnâ. Erhöhte Leistungsaufnahme: 50 statt 10 W. Typisch fĂŒr HF-Selbsterregung, man hört davon nur die Grundfrequenz. Dazu gibt es einen (nicht wirklich zielfĂŒhrenden) Beitrag auf mikrocontroller.net.
Fehlersuche: Auf dem Oszilloskop konnte ich am Eingang der Endstufenplatine eine vagabundierende HF sehen. Alle ĂŒbrigen Spannungen sahen normal aus. Ein Schaltplan stand zur Hilfe. Bei der Suche wurde festgestellt, dass sich beim Abstecken der VorverstĂ€rkerplatine (7-poliger Stecker) ein normales Verhalten einstellte. Ein Audiosignal konnte am Steckverbinder Pin 1 (gegen Masse Pin 4; fies: Das ist nicht die andersfarbige Ader) eingespeist werden, welches ohne FremdgerĂ€usche wiedergegeben wurde. Deshalb habe ich lange, sehr lange damit zugebracht, den Fehler mit Funktionsgenerator und Oszilloskop auf der VorverstĂ€rkerplatine bzw. auf der daran angesteckten Potenziometerplatine zu suchen. OPVs ausgelötet um den Signalweg zu unterbrechen: Keine Abhilfe. Fies: IC-Fassungen passen nicht! Ebenfalls fies: Bereits beim Anstecken des 7-poligen Steckers mit 2 komplett abgelöteten Signalleitungen (eine zur Speisung, eine als Feedback fĂŒr den Begrenzer) schwingt die Endstufe!
Die beiden letzten Paare waren schlieĂlich wirklich Schuld, das UniversalmessgerĂ€t zeigte statt 100 ”F 100 ⊠an! Diese hĂ€ngen an der VorverstĂ€rker-Stromversorgung mit ±15 V, und da war wohl die Speisespannungsschiene doch mit etwas HF versaut! Die anderen Elkos zu tauschen ist trotzdem angebracht, da diese neben heiĂen Bauelementen angeordnet sind. Bei der Gelegenheit gleich etwas hoch setzen, um den Abstand zu heiĂen Teilen zu vergröĂern.
Symptom: Zu wenig Leistung. Das Ăffnen des GehĂ€uses ist in diversen YouTube-Videos veröffentlicht; IMHO am besten geht es unter Zuhilfenahme des Stricks-im-Schraubstock. Danach folgende Messwerte mit einem Satz aus 3 frischen R6-Zellen:
Messung | ausgeschaltet | Freilaufende RĂ€der | Blockierte RĂ€der | Einheit |
---|---|---|---|---|
Batteriespannung | 4,60 | 4,56 | 4,50 | V |
Motorspannung | 0 | 4,45 | 4,21 | V |
Batteriestrom | 0 | 0,08 | 0,2 | A |
Zugkraft (Friktion1) | 1,2 | N | ||
Zugkraft (Zahnrad2) | 3 | N |
Zu Tage kommt demnach eine funktionierende Schalt-Steuerung und ein Motor mit ungewöhnlich groĂem Innenwiderstand von 20 âŠ. Womöglich fĂŒr Lego-Spielzeug normal, aber auch fĂŒr Spielzeug liegt dieser normalerweise im unteren Ohm-Bereich, etwa 2 âŠ.
Da ein Motortausch wohl nicht in Frage kommt, habe ich vor dem Zusammenbau die allzu straffen Plast-Widerhaken durch AnschrĂ€gen entschĂ€rft. Dann muss beim nĂ€chsten Zerlegen nur noch gezogen werden ohne gleichzeitig hebeln zu mĂŒssen.
Symptom : Rutscht im Innern durch. HinterrĂ€der lassen sich von Hand drehen. Ăffnen wie vorher.
Reparatur: Ohne die Hinterachse auseinandernehmen zu mĂŒssen, mit Akkuschrauber Loch Durchmesser 1,4 mm durch Ritzelhals und Hinterachse gebohrt, winzige Schraube aus anderem, geschlachteten Spielzeug 'reingedreht. Schraubenkopf erfordert etwas FreifrĂ€sen der Bodenschale, sonst hackendes GerĂ€usch nach dem Zusammenbau; besser wĂ€re wohl eine Madenschraube.