Weihnachten steht vor der Tür! Für mich und meinen Bruder Anlass genug, die supernerdigen Onkels raushängen zu lassen und unseren Göttibuben ein rudimentäres Raumschiffcockpit zusammen zu basteln.
Er ist hochdekorierter Programmierer und ich habe vor einigen Jahren mal zwei Drähte zusammengelötet – soviel zu unseren Referenzen.
Er hat nun also ein paar leuchtende Knöpfe, Drehschalter und Leuchtanzeigen gekauft, kümmert sich später um die Programmierung und mein Teil der Arbeit wäre, den ganzen Gerümpel mit einem Mikrocontroller in Verbindung zu bringen.
Dazu habe ich nun mal einen ersten Schaltplan entworfen. Falls jemand von euch Zeit und Lust hat, wäre es nett, wenn man mal ein Auge drauf werfen könnte. Schliesslich wäre es schade, wenn ein vermeidbarer dummer Fehler in eine gewaltige Explosion mündet und meinen gesamten Weihnachts- und Stammbaum abfackeln würde...
Da Weihnachten schon relativ bald ist und wenig Zeit für Ungewissheit und Experimente bleibt, habe ich mich für Bauteile und Mechanismen entschieden, die ich bereits ein wenig kenne, was für euch allenfalls etwas befremdlich wirken mag, da es möglicherweise geeignetere und einfachere Bausteine gibt. Aussehen tuts jedenfalls wie folgt:
Nicht auf der Platine befinden sich:
1x grosse 7Seg.Anzeige mit Dezimalpunkt 12V -> (bekommt eine eigene Platine mit 10Pol Flachbandstecker und Transistoren, die die 12V pro Segment schalten und natürlich vorwiderständen)
3x 10 Segment LED-Bar, 5V -> bekommen eigene Platinen mit Vorwiderständen, Gnd und werden per Flachband von Schieberegistern angesteuert
einige Schalter mit eingebauter LED 12V (leider kein Datenblatt vorhanden) -> werden fliegend verdrahtet
2x 10kOhm Drehpotentiometer -> ebenfalls fliegend verdrahtet
1x Schalter mit Schlüssel -> fliegend verdrahtet
1x umgebauter alter Joystick mit x- & y-Achse und zwei Knöpfen -> wird per D-Sub15 angeschlossen
Ich habe versucht, auf dem Schaltplan möglichst alles zu beschriften, um euch nicht mit allzu langen Texten quälen zu müssen. Falls aber noch Informationen gebraucht werden, werde ich diese gerne nachliefern. Auch Links zu Datenblättern kann ich anfügen, falls nötig.
Meine Frage: Explodiert das Ding? Oder könnts in etwa funktionieren?
(Eigentlich muss es nur die Eingaben erkennen und die Leuchtdinger ansteuern können)
Finde den Atmega32U4 ziemlich cool! Hat eine integrierte USB-Schnittstelle (stell dir vor wie geil das ist, wenn man später irgendwelche Eingaben am Computer über das selbst gebastelte Cockpit tätigen kann8)) und dazu hat er trotzdem noch eine zusätzliche serielle Schnittstelle, um mit einem zweiten uC zu kommunizieren, falls wir das Gerät später noch erweitern möchten. Ausserdem wird er in den Arduino Produkten verwendet, was die Programmierung ziemlich vereinfacht, da man nicht mit jeder Version der IDE wieder in der ziemlich unübersichtlichen Anwendung rumstöbern und nach boards.txt, pins.cpp oder was weiss ich für Sachen suchen muss, um Anpassungen vorzunehmen Ist aber nicht gleich so überdimensioniert wie ein Mega.
Die ShiftPWM Lib kenne ich noch nicht. Werde sie gerne mal suchen und anschauen. Will es aber meinem Bruder ja auch nicht zu einfach machen
Achja. Rückstellbare Sicherungen wollte ich noch einbauen, da mir die Regler abrauchen würden, wenn alle 30 LED's gleichzeitig brennen, was durch unbedachte Programmierung durchaus geschehen könnte. Kommen die vor die Spannungsregler oder direkt danach?
Hitsuji:
Finde den Atmega32U4 ziemlich cool! Hat eine integrierte USB-Schnittstelle (stell dir vor wie geil das ist, wenn man später irgendwelche Eingaben am Computer über das selbst gebastelte Cockpit tätigen kann8)) und dazu hat er trotzdem noch eine zusätzliche serielle Schnittstelle, um mit einem zweiten uC zu kommunizieren, falls wir das Gerät später noch erweitern möchten. Ausserdem wird er in den Arduino Produkten verwendet, was die Programmierung ziemlich vereinfacht, da man nicht mit jeder Version der IDE wieder in der ziemlich unübersichtlichen Anwendung rumstöbern und nach boards.txt, pins.cpp oder was weiss ich für Sachen suchen muss, um Anpassungen vorzunehmen Ist aber nicht gleich so überdimensioniert wie ein Mega.
Die ShiftPWM Lib kenne ich noch nicht. Werde sie gerne mal suchen und anschauen. Will es aber meinem Bruder ja auch nicht zu einfach machen
Ja, ich wundere mich halt nur, wieso du einen nakten µC nimmst. Wenn 32U4, dann am besten einen auf einem Board. (Pro Micro). Dann brauchste dich um die Minimalschaltung nicht kümmern. Den 32U4 gibt es soweit bekannt nicht im DIP.
Ansonsten würde es ggf. auch Sinn machen, die HC595 gegen TLC5916/7 auszutauschen. Der kann den Strom von 20mA/Led fahren, ohne ausserhalb der Spezifikationen zu liegen. Kurzschlussschutzt etc auf der Led Seite. Dann reicht es, alle Leds an der Anode zusammenzuführen und die Kathoden einzeln zu den Pins zu führen. Spannungsversorgung der Anode kann vernachlässigt werden. Das ganze ist eine Stromsenke und passt sich entsprechend an.
Ich mags, wenn alles, was man braucht, auf einem Board ist. Und TQFP Packages lassen sich ja noch einigermassen löten (unter lautem Fluchen halt einfach). Finds fast schlimmer, einen gefühlt 1'000-beinigen IC durch unsauber schräg und versetzt gebohrte Löcher zu würgen und auf der Rückseite zu löten, während man auf beiden Seiten Schlangenlinien um die Füsschen und die Pads routen muss
Bezüglich Shiftregister bin ich davon ausgegangen, dass die Angabe von 35mA output current an den Pins Qn pro Pin gemeint sind. Ist das nicht so? Das wäre natürlich blöd
Okay. Dieser Kollege hat die gleiche Pinbelegung, Funktionsweise und Gehäusegrösse und ist ohnehin 40% günstiger als der andere und er kann gemäss Datenblatt ausdrücklich 70mA pro Pin 8)
Ich hatte nicht auf den Schirm, dass es den 32U4 auch im TQFP44 gibt. Hatte bislang nur Kontakt mit der QFN44 Variante. Die finde ich zum Kotzen wenn es ums handlöten geht. TQFP hingegen ist machbar
Die HC595 Module schaffen nicht viel. 8x20mA mag meist gehen, ist aber weit ausserhalb der Spezifikationen. Das ist eines der großen Probleme bei Tutorials zu diesem Schieberegister. Es kann nicht sein, dass man sich hier weit aus Fenster lehnt. Wenn du 4x Leds gegen GND und 4x Leds gegen VCC schaltest, sollte es gerade noch gehen.
Einfacher wäre es aber, einen ULN nachzuschalten, dann bist auf der sicheren Seite, oder aber direkt TLC591x einsetzen.
Hier noch ein Link dazu:
Musst selber wissen, was dir die Widerstände an den Leds wert sind. Hier brauchst du sie nicht (nur einen an Rext). Setze bei Leds schon lange keine HC595 mehr ein. Man spart halt auch gut Platz, wenn man die Widerstände nicht mehr setzen muss.
Hitsuji:
Weihnachten steht vor der Tür! Für mich und meinen Bruder Anlass genug, die supernerdigen Onkels raushängen zu lassen und unseren Göttibuben ein rudimentäres Raumschiffcockpit zusammen zu basteln.
Es ist ja auch eine Schande, was der Handel so an Star-Wars Edel-Trash anbietet:
Das "Star Wars Bed" im Stile eines Millenium-Falken für Kinder kostet satte 3999,- US$ und die Steuerkonsole ist der reinste Fake, da funktioniert ja gar nichts. Da stellt sich natürlich die Frage, wie der Nachwuchs es mit so einem Trash jemals schaffen soll, mit Hypergeschwindigkeit ins Traumland zu entschweben.
Für diesen Preis sollte es zumindest einige dieser Hoverspulendinger eingebaut haben
Habe nun noch zwei 350mA Sicherungen nach den Stepupwandlern in die Versorgungsleitungen 5V und 12V geschaltet (so richtig?) und den Atmega32u4 in ein TQFP-44 Gehäuse verfrachtet. Diese sind hoffentlich alle gleich gross oder? Habe das Schaltsymbol aus dem Arduino Micro Schaltplan in der Library mit dem Gehäuse eines anderen Atmegas verknüpft. Hoffe das funktioniert so.
Ich habe nun die Platine hergestellt und möchte das Teil in Betrieb nehmen, bekomme beim Bootloader Brennversuch nur die folgende Fehlermeldung:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Diese Meldung habe ich in früheren Projekten auch schon angetroffen. Gewöhnlicherweise waren da die Verbindungen zur ISP Schnittstelle nicht gut. Gemäss meinen Messungen sind die Headerpins aber wunderbar mit den entsprechenden Pins verbunden!
Zum Programmieren wollte ich zunächst einen USB Tiny ISP verwenden. Wenn ich diesen anschliesse, zeigt es mir jedoch den USB Port gar nicht zur Auswahl an. Keine Ahnung was da los ist, also habe ich den UNO mit dem ISP Programmer Sketch geladen, verkabelt wie auf dem angehängten Bild und es so versucht. Mit ebenjener Fehlermeldung als Resultat.
Irgendwo hab ich noch was gelesen, dass die Fehlermeldung auch mit dem Oszillator zu tun haben könnte. Ein Oszilloskop, um diesen auszumessen, habe ich jedoch nicht Könnte ich allenfalls da was versuchen?
Danke für deinen Link. Werde mir das merken, falls mal was mit dem Quarz und den entsprechenden Fuses nicht stimmt.
In meinem Fall hat sich die anfängliche Panik bereits wieder ein wenig gelegt. Habe das Flachbandkabel ausgemessen und bemerkt, dass die beiden Enden ganz und gar nicht so miteinander verbunden sind, wie ich mir das vorgestellt habe. Somit lags also ganz einfach an einer falschen Verkabelung wegen dem Flachbandkabel (schade, dass die Fähigkeit zur mentalen Rotation einer von ca. 6 Intelligenzfaktoren ist... ). Seltsam ist, dass ich früher problemlos über den USB Tiny programmiert habe und meines Wissens Miso, Mosi und ihre Konsorten genau glich herausgeführt habe egal...
Nun wäre natürlich cool, wenn ich über den eingebauten USB Micro programmieren könnte. Allerdings funktioniert das momentan noch nicht. Schliesse ich die Platine an eine externe Stromversorgung an und stecke das USB Kabel ein, erkennt die IDE sie zwar als Arduino Micro, aber sobald ich was hochladen will, geht etwas mit dem Port schief. Ich frage mich, ob das mit dem HWB Pin am Controller zu tun hat, den ich nicht angeschlossen habe, während er auf dem original Micro Board per 10kOhm auf GND gelegt wurde. Im Datenblatt heisst es zwar, dass der Pin nur "aktiv" ist, wenn die entsprechende Fuse gesetzt ist. Schaue ich aber in der Boards.txt die Fuses nach, scheint diese Option deaktiviert zu sein. Frage mich, ob es sich lohnt, über eine hässliche Bastellösung den Pin nachträglich noch entsprechend zu verschalten.
Ok, fuse umstellen hat das Problem bereits gelöst... kann jetzt per USB Micro programmieren!
Irgendwie scheine ich jedoch zu dumm zu sein, mir die räumliche Rotation der Pins durch das Flachbandkabel vorzustellen. Nach etlichen Skizzen habe ich nun Konsequenzen für die restlichen Bestandteile des Projekts gezogen, die ebenfalls durch Flachbandkabel angeschlossen sind, was z.T. darin resultierte, dass ich einzelne Litzen abtrennen und verdrehen musste, bevor das andere Ende angecrimpt wird. Hoffe das funktioniert dann so.
Nächstes Problem. Der Piezo ist extrem leise. Es handelt sich dabei um das Teil aus dem Arduino Starterkit. Beim vorherigen Test direkt ab Pin betrieben war tip top, nun in der Schaltung über den Transistor extrem leise. Why? Jemand eine Idee?
Ach Kacke, 7-Segment Anzeige funktioniert auch nicht. Stimmt etwas mit diesen Transistorschaltungen nicht? An der Platine finde ich sonst nichts auszusetzen.
Das Teil ist über ein 10-Poliges Flachbandkabel angeschlossen. An Pin 10 liegen 12V (nachgemessen) für die gemeinsame Anode an, an Pin 1 ist GND. An den restlichen Pins liegen 5V von einem Schieberegister an. Gnd ist mit dem des Shiftregisters verbunden. Leuchten tut aber nichts.