Inzwischen veraltete und obsolete Dokumentation, die nur noch verwirrt.
Das Gesamtkonzept ist wegen der SchaltschrÀnke IMHO völlig aus dem Ruder gelaufen, und nun folgt kurz vor der PrÀsentation eine Feuerlöschaktion auf die nÀchste.
Software-Stand (nicht von mir) (Ich schieĂe mir nicht mit Englisch kommentarlos ins Knie.)
Grober Ăberblick:es laufen einzelne Services (unter vehicle/services) diese kommunizieren ĂŒber mqtt (hauptsĂ€chlich posaunen sie ihre aktuellen Werte heraus) in der lib/car.py befindet sich eine Klasse ArtikulatedAxisVehicle; die hĂ€lt die z.Z. die zentralen Infos ĂŒber den Fahrzeug-Status und hĂ€lt Methoden zur Berechnung der Fahrmaneuver bereit der Service "driver" steuert das Fahrzeug; driver.py enthĂ€lt den Low-Level-PWM-Kram; dirver-server.py nimmt die mqtt-Nachrichten auf und löst letztlich Bewegungen und Maneuver aus.
Eingesetzt wurde zunĂ€chst diese USV um den StromÂversorgunsÂproblemen des Raspberry Pi 4 (RPi4) Herr zu werden. Ist aber fĂŒr die Katz', im Nachhinein weil der RPi4 lieber 5,4 V haben möchte und hier nichts einstellbar ist. Es ist halt nur eine 08/15-Powerbank, die nur von den MontageÂmaĂen (Löcher) her zum RPi passt. Daran ist so ziemlich alles zu kritisieren:
Bedienungsanleitung (PDF-Scan, 10 Seiten A4)
KonformitÀtserklÀrung
(PDF-Scan, 3 Seiten A4, identisch mit jener zum Radlader)
Seriennummern: Fahrzeug: -, Fernbedienung: 1G047198, EmpfÀnger: 1G047223
Das Not-Aus schaltet den Output-Enable-Eingang der PWM-Platine
und nicht mehr die dicke Leitung vom Hauptakku.
Der Akkuanschluss wurde auf die originale, unangezapfte
Leitung mit XT60-Stecker
rĂŒckgebaut.
Der âMagic Controllerâ ist verzichtbar; die PWM-Platine hat noch genĂŒgend
AnschlĂŒsse fĂŒr die Beleuchtung.
DinosauriergerÀusche sind kein Muss, der Ton kann vom Raspberry mit einem
sparsamen VerstÀrker kommen.
TODO: Bei der nĂ€chsten Revision steht das ZurĂŒcksetzen der Kamera
und der gesamten Baugruppe nach hinten an,
um die Kameralinse nicht jedesmal durch die Frontscheibe fĂ€deln zu mĂŒssen.
Dazu muss der Tiefsetzer auf die andere Seite, unter die Kamera.
Problem: Autonomie oder wenigstens Positionskorrektur anhand optischer Marker in weiter Ferne. Lenk- und Verwindungspoti zerstört durch ungeschicktes Anheben des Lasters. (Verwindungsbegrenzer aus Alu gefertigt.) Bei reiner Zeitsteuerung (Fahrantrieb, Lenkung) deutliche AbhĂ€ngigkeit vom Ladezustand des Fahrakkus. Als Spielzeug konzipiert ist eine reine PWM-Servosteuerung drin und kein Istwertaufnehmer bspw. fĂŒr Radumdrehungen, wie das bei RasenmĂ€hrobotern gemacht wird.
Lösung: (Gelöst)
Die ursprĂŒnglich vorgesehene Weitwinkel-Kamera (âFischaugeâ, 230326 gemessener horizontaler Ăffnungswinkel 94°) fĂŒr den Raspberry wurde schlieĂlich durch eine ânormaleâ Kamera ersetzt und dafĂŒr ein Adapter + Halter konstruiert und 3D-gedruckt. Wichtig ist nĂ€mlich, dass die kleine Kamera nicht wackelt! Diese ist nĂ€mlich nur lose befestigt.
Am RaspberryPi4 scheint folgendes angeschlossen zu sein:
An seinem Pfostenstecker ist folgendes angeschlossen:
3P3 ge IÂČC | 1 | 2 | 5P rs Ultraschallsensor | |
SDA GPIO2 gn IÂČC | 3 | 4 | 5P rt dick Strom, von einem blau eingeschrumpften Etwas | |
SCL GPIO3 bl IÂČC | 5 | 6 | 00 sw dick Strom, von einem blau eingeschrumpften Etwas | |
GPIO4 | 7 | 8 | TxD GPIO14 ge Ultraschallsensor | |
00 | 9 | 10 | RxD GPIO15 ws Ultraschallsensor | |
GPIO17 | 11 | 12 | GPIO18 | |
GPIO27 | 13 | 14 | 00 sw IÂČC | |
GPIO22 | 15 | 16 | GPIO23 | |
3P3 rt Potenziometer | 17 | 18 | GPIO24 | |
GPIO10 MOSI | 19 | 20 | 00 sw Ultraschallsensor | |
GPIO9 MISO | 21 | 22 | GPIO25 | |
GPIO11 SCK | 23 | 24 | GPIO8 | |
00 sw Potenziometer | 25 | 26 | GPIO7 | |
ID_SD | 27 | 28 | ID_SC | |
GPIO5 | 29 | 30 | 00 | |
GPIO6 | 31 | 32 | GPIO12 | |
GPIO13 | 33 | 34 | 00 | |
GPIO19 | 35 | 36 | GPIO16 | |
GPIO26 | 37 | 38 | GPIO20 | |
00 | 39 | 40 | GPIO21 | |
Peripheriebausteine: Ganz nach Arduino-Manier nichts selbstgebasteltes sondern ausschlieĂlich gekauftes, was mechanisch nicht zusammenpasst, und dann irgendwie in wilder Verkabelung in das Fahrerhaus gepresst:
Idiotischerweise werkelt da noch ein Stereo-Soundgenerator, der das GerĂ€usch eines startenden Dieselmotors, das FahrgerĂ€usch, Relaisklicken (beim Licht schalten) und den RĂŒckfahrpieper nachĂ€fft. Wie Dinosaurier in der Mondrakete.
Wie der originale FunkempfĂ€nger totgelegt wurde konnte nicht nachvollzogen werden. Das Totlegen ist schade, denn ohne Funkfernbedienung lĂ€sst sich das Auto nur umstĂ€ndlich mit dem Raspberry steuern, was gerade fĂŒr die Inbetriebnahme von angebauter Sensorik (ĂberprĂŒfung von Freiheiten) sehr umstĂ€ndlich ist.
Ist nicht obsolet.
Zum I-Bus siehe Abschnitt zum Originalcontroller.
Der Ultraschallsensor versagt nach einigen Minuten, an der seriellen Schnittstelle kommt nur noch MĂŒll. Nur unter Python?
Deshalb mal eben schnell (gut, dauerte trotzdem 3 Stunden) ein C++-Wegwerfprogramm fĂŒr Linux geschrieben und am hiesigen Barebone + USB-Seriell-Konverter getestet: LĂ€uft völlig problemlos an einem Linux-Barebone.
Inzwischen gelöst durch Neuzuordnung der Raspberry-internen Schnittstellen zur externen: Beim Compute-Module liegt da standardmĂ€Ăig eine sog. âMini-UARTâ, die vermutlich per Energiesparmodus nach einiger Zeit mit falschem Bittakt gefĂŒttert wird. Hier steht 'was dazu.
Weiteres Problem: Interferenz mit den Ultraschall-Abstandsmessern
von der Torsteuerung!
Da dieser vergossene Typ in keiner Weise synchronisiert werden kann
bleibt nichts anderes ĂŒbrig als diesen vor dem Tor auszuschalten.
Dadurch entfÀllt dort die Hinderniserkennung.
Beim Einsatz der (einfachen, unvergossenen)
HC-SR04
wĂ€re es ratsam sich ĂŒber deren Synchronisierung Gedanken machen.
Will man die Schaltungstechnik behalten, geht das nur mit einem
hinreichend zeitprÀzisen Funkkanal zum Schaltschrank.
Ansonsten wÀre es ganz klar besser, wenn sich die Sensoren gefÀlligst
per Ultraschall âsynchronisierenâ
(= das Maul halten wenn jemand anderes sendet)
und nach Möglichkeit kodierte Signale verwenden:
Das schreit nach komplettem Neubau, zumindest fĂŒr's Auto.
Und ist schon ein eigenes (studentisches?) Forschungsthema wert.
Bedienungsanleitung (PDF-Scan, 9 Seiten A4)
KonformitÀtserklÀrung
(PDF-Scan, 3 Seiten A4, identisch mit jener zum Muldenkipper)
Seriennummern: Fahrzeug: -, Fernbedienung: ?, EmpfÀnger: 1G047204
Kein Licht leuchtet, der Magic Controller bekommt seine 6 V, keine Spannung kommt da 'raus. Verdacht: Im Magic Controller ist eine durchgebrannte SMD-Sicherung. Dieser lieĂ sich vergleichsweise leicht ausbauen und aufschrauben. Keine Sicherung drin, die kaputt gehen könnte, sieht alles OK aus. Die 9 vermeintlichen LampenanschlĂŒsse sind nur 8 AusgĂ€nge, der vorletzte Anschluss macht 'was besonderes, und der letzte geht nicht ĂŒber den ULN2003 sondern ĂŒber einen gesonderten MOSFET.
Suchen nach âCXSTUDIOâ und âRC16-2â bleibt ergebnislos. Also Bauteile recherchieren und Schaltplan erstellen:
Warum das Licht aus bleibt ist rĂ€tselhaft. Vermutlich gibt es eine Einstellmöglichkeit ĂŒber die originale Funkfernbedienung, und es wurde âaus Versehenâ eine PWM-Folge generiert, die das Licht dauerhaft ausgeschaltet hat: Das Herumwursteln mit Closed Source ist und bleibt ein Martyrium!
Zum I-Bus siehe Abschnitt zum Originalcontroller.
Die ersten vier Zuordnungen (der SteuerknĂŒppel) sind fix im Controller vorgegeben. Die KanĂ€le 5-9 sind im Controller-Setup konfigurierbar. Dabei ist bei beiden Spielzeugen die Hydraulikpumpe dem Kanal 5 zugeordnet, und der Controller lĂ€sst im sog. Mixbetrieb beim BetĂ€tigen einer Hydraulikfunktion (Lenken, Heben/Senken) den Kanal 5 mit hochlaufen, per negativer Mixangabe jeweils zu positiven Werten (die Hydraulikpunpe wird nie rĂŒckwĂ€rts betrieben).
Warum die beiden Spielzeuge dermaĂen unterschiedlich (durch Verdrahtung und Controller-Programmierung) benutzt werden sollen ist mir unbegreiflich. Man vergleiche die beiden Bedienungsanleitungen. Naheliegend ist die Gleichschaltung, wobei der Radlader IMHO die naheliegendere Bedienphilosophie hat, also als Vorlage dient.
Gesucht und gefunden: Diskussion um die Hebelbelegung bei Flugmodellen (am besten Cookie-Nervrequester igorieren â nicht wegklicken â und zum Lesemodus wechseln)
WĂ€hrend der Bauma-Messe sind die Lenkservos beider Fahrzeuge ausgefallen.
Sicherlich ist die Art der unverĂ€nderten âRegelungâ der Raspberry-Software
erheblich Schuld am Disaster, denn so liegt stets die volle Spannung
am Motor an, und es flieĂt meistens KurzÂschlussÂstrom.
IMHO sollte der Programmierer von seiner Arbeit entbunden werden,
denn so haben wir allenÂfalls gegenÂeinander gearbeitet.
Denn es wÀre allenfalls eine Zeile Kode zu entfernen gewesen,
die mit dem Math.sign()
-Aufruf.
Und dafĂŒr hatte er einige Wochen (!) Zeit.
Andererseits kennt man GleichÂstromÂmotoren normalerweise mit KohleÂbĂŒrsten. Hier sind keine drin, nicht ein bisschen Kohle. Daher auch vergleichsÂweise sauber. Die ZuleitungsÂfedern sind bestimmt schlicht verglĂŒht.
Da der (drahtlose) X-Box-Controller an hĂ€ufigen VerbindungsabbrĂŒchen leidet (selbst oder erst recht aus nĂ€chster NĂ€he) stellt sich die Frage, ob man den originalen FlySky-Controller irgendwie doch noch verwenden kann. Klar, das Abgreifen und Messen der bis zu 9 PWM-Signale geht immer, aber das ist die verdrahtungsintensive Holzhammer-Variante.
ZunĂ€chst wurde die Bedienungsanleitung zum Controller gefunden und durchgelesen. Da stand drin, dass man damit den EmpfĂ€nger auf PPM-Betrieb umstellen kann: Statt 9 DrĂ€hten genĂŒgt 1 Draht, um an diesem PulsabstĂ€nde zu messen und den KanĂ€len zuzuordnen. Dazu muss man das Schloss-Symbol 2 s lang antippen (Touch-Screen!) und kann dann zu den Einstellungen, wo man vermutlich wer-weiĂ-was alles verstellen kann.
Zur ĂberprĂŒfung der I-Bus-Daten habe ich ein kleines Wegwerfprogramm in C++ geschrieben.
Ausgelagert auf gesonderte Seite
Siehe auch Mathematik
FĂŒr die Erfassung âob die Kuh vor'm Torâ steht wurden die sattsam bekannten Ultraschall-Entfernungsmesser HC-SR04 oder so Ă€hnlich (nicht von mir!) ausgewĂ€hlt und verbaut, und fĂŒr deren Abfrage ein Arduino Uno (Schaltplan) verschwendet. (Eine vernĂŒnftige SPS könnte das auch, mĂŒsste dazu ânurâ TTL-Ein- und AusgĂ€nge aufweisen. Aber TTL ist fĂŒr Hutschieneneinklicker ein Fremdwort.) Ăber die 3 m langen Leitungen mit nur TTL-Pegel und einer parallel laufenden Motorsteuerleitung fĂ€ngt sich das System alles mögliche ein. Mit WiderstĂ€nden habe ich eine Art Terminierung realisiert, die sowohl Störungen unterdrĂŒckt als auch Arduino und die HC-SR04 schĂŒtzen.
Im Arduino werkelt eine Gruselsoftware. Diese habe ich schon mal umgeschrieben und verkĂŒrzt. Dabei könnte der kaum ausgelastete Mikrocontroller ruhig noch etwas anderes machen! So zum Beispiel die gesamte SPS ersetzen und â wenn's denn unbedingt sein muss â OPC-UA âsprechenâ. Hier wurde mal eben schnell ein 50 cm langes WS2812-Lichtband rangefrickelt, welches einfach Gleichlicht anzeigt. Dazu wurde kurzerhand die (ĂŒbliche) Arduino-Bibliothek NeoPixel eingesetzt und das Projekt als .ino-Datei (aka Arduino-Projekt) belassen. FĂŒr ein ordentliches C++-Projekt mĂŒsste man NeoPixel selbst in die Hand nehmen. DafĂŒr gibt es sogar deutsche Dokumentation.
Die âdicke Wurstâ zwischen Schaltschrank und Tor kann man IMHO niemandem verkaufen; das Kabel ist viel zu unhandlich und teuer. Richtiger wĂ€re ein lokales Bussystem zwischen Steuerung und Tor. Dazu wĂŒrde ich RS485 favorisieren, neben Profibus (ebenfalls RS485) und USB (mit RS485 verwandt). USB hĂ€tte den Vorteil, dass die Tore auch einzeln (am PC) angeschlossen und in Betrieb genommen werden können sowie dass es eine idiotenÂsichere SteckÂverbinder-Norm gibt. Nachteil wĂ€re dann, dass der Schaltschrank als USB-Host fungieren muss, ein entsprechend groĂer Mikrocontroller mit geeigneter FunktionalitĂ€t wĂ€re bspw. STM32F4xx. Daher plĂ€diere ich fĂŒr bimodale Tore, USB und RS485 auf den gleichen Leitungen.
Die SchaltschrĂ€nke und Tore đ:
- Zusammengesetztes Kabel zwischen Siemens-Steuerung und den Toren zwecks Abschirmung zu den Sensorleitungen.
RĂŒckgebaut, durch Terminierung obsolet- Auf der Arduino-Platine fĂŒr Siemens waren die AusgĂ€nge Sensor1 und Sensor5 vertauscht. Dadurch chaotische Zuordnungen.
Korrigiert in Hard- und Software- Die gemeinsame Triggerleitung wurde durch ĂŒbersprechsichere getrennte Triggerleitungen ersetzt. Der Arduino-Bastler wusste offenbar nicht, dass die mit A0..A5 bezeichneten AnschlĂŒsse auch digital sind.
- Die Arduino-Software wurde online entwickelt. Diese war mit diversen
delay()
s gespickt und gÀhnend langsam.
Faktisch komplett neu geschrieben- Die mechanische Fertigung des Schaltschrankes lĂ€sst zu wĂŒnschen ĂŒbrig. Unpassende Clip-Befestigungen zur WandstĂ€rke, Netzstecker unisoliert. SchrĂ€g sitzende Stehbolzen, irrsinnig wenig Platz hinter dem Netzstecker. Der (Koffertransport-)Griff ist zu tief, unbequemer Transport.
Neukonstruktion s.u. am Netzstecker, weil sicherheitsrelevant. Leider musste einer der Netzstecker geklebt werden, weil Rastnasen abgefeilt(!!) waren. LĂŒftergitter durch SchrĂ€gfeilen des Schaltschrank-Ausbruchs fixiert. Der Rest bleibt so, merkt hoffentlich keiner.- Die SchaltschrĂ€nke sind unterschiedlich, und in beiden FĂ€llen stimmt der Schaltplan nicht. Alle 4 Tore sind unterschiedlich.
Korrigiert und gleichgezogen. Massive Arbeit- Beschriftungen fehlen oder sind unleserlich. Wacklige Not-Aus-Beschriftung. Not-Aus lÀsst sich drehen, Verdrehsicherung unwirksam.
TODO: Neuerstellung. Echtes, passendes Not-Aus-Schild (kaufen?)- Der Schaltplan wurde nur gedruckt und verschmiert ausgehÀndigt und enthÀlt viele Dopplungen.
MĂŒhselig verglichen und Dopplungen entfernt. Der Schaltplan existiert als vertrauenswĂŒrdiges Original nunmehr nur in Papierform mit PDF-Kopie:
- Schaltplan 60 cm breiter Schaltschrank (2Ă) 11 Seiten A4 quer
- Schaltplan 40 cm schmaler Schaltschrank (1Ă) 1 Seite A4 quer
- Schaltplan Tor (4Ă) 3 Seiten A4 quer
- Kein Zugang zur Schaltplan-Quelle.
TODO: Neuerstellung- Die Schaltschrank-Innenbeleuchtung wurde in einem (ach-so-tollen papiernen) Konzept vorgesehen und dann komplett vergessen.
Ist eingebaut. Ăber verdrehsichere dreipolige PSK-Stecker auf der Arduino-Platine angeschlossen und mit 5 Volt versorgt.- Es fehlt immer noch die dritte Steuerung, zwei Netzeinbaustecker-Sicherung-Schalter-Kombinationen sowie die Zierecken fĂŒr den dritten Schaltschrank.
Erledigt. Fehlt noch die SPS sowie ein Teil des Harting-Steckers: Wird nachgeliefert.- Unnötige Löcher (2Ă USB-, 1Ă Ethernet-DurchfĂŒhrung, 2Ă M12-Buchse)
M22: Erledigt mit Blindstopfen als 3D-Druck, TODO bei M12-Buchse
Conrad StĂŒck Bestellnummer EVP/⏠Beschreibung 2 501638-VQ 4,89 Snap-In-Netzbuchse 1 1990799-VQ 13,99 19300061541 SteckergehĂ€use 1 749623-VQ 22,99 09160243001 Stecker - lieferbar in 4 Wochen 4 749296-VQ 0,99 09150006101 Steckstifte Crimp 1 1990309-VQ 18,99 09300060301 BuchsengehĂ€use 1 749637-VQ 21,99 09160243101 Buchse 4 749478-VQ 1,29 09150006201 Buchsenstifte Crimp 1 749469-VQ 0,42 09330009915 Kodierstift Item 8 0.0.627.60 a.A. https://www.item24.com/de-de/verbinder-abdeckkappe-8-r40-90-grau-aehnlich-ral-7042-62760/
Wie auch immer man so einen Arduino Uno tot bekommt: Vermutlich durch Speisung mit 24 V und Verpolung. In diesem Fall war der Mikrocontroller ATmega328P zwar nicht tot, fraĂ aber mit 200 mA viel zu viel Strom. AuĂerdem war der LĂ€ngsregler tot: Wurde ersatzlos ausgelötet, weil das Board kĂŒnftig mit gesonderten 5 V per USB gespeist wird. Als Ersatz wurde (natĂŒrlich ohne mich zu fragen) ein neuer Arduino Uno gekauft; diese Platine wurde schlieĂlich mit getauschtem und mit Caterina-Urlader betankten Mikrocontroller in den dritten Schaltschrank nur zum Initialisieren der WS2812-Innenbeleuchtung verbaut: Verschwendung!
Ein Not-Aus-Taster fĂŒr den Betrieb am Steuerungscomputer (Laptop) ...
Dass der im Schrott vorgefundene Eisenabschnitt nicht auf Anhieb in den reichlich dimensionierten Durchmesser des 3D-Druckteils passt liegt am Schrumpfungsprozess des 3D-Druckteils von 100 auf 99,5 mm: Nacharbeit an der Drehmaschine.
Die Firmware fĂŒr ATtiny25 und V-USB. Der Schaltplan ist trivial und im Firmware-Quelltext angegeben. Inzwischen (November 2022) wurde die Schaltung wieder entfernt, der Quelltext ist historisch. Denn so kam die Grapefruit nie zum Einsatz, niemand sah sich imstande, die Steuersoftware mit dieser Not-Aus-Funktion zu ergĂ€nzen. Also nachtrĂ€glich vielen Dank fĂŒr die fruchtlose Zusammenarbeit.
Der mĂŒhsam erarbeitete Ansatz mit der Software-PLL musste verworfen werden.
Damit entfĂ€llt die EchtzeitÂuhr und die BatterieÂstĂŒtze.
Der ATmega stĂŒrzt unvermittelt ab oder macht sonstwas,
wenn er in gestörter Umgebung mit RC-OszilÂlator lĂ€uft,
egal ob mit oder ohne PLL.
Der Jitter ist (vermutlich nicht nur fĂŒr die serielle SchnittÂstelle)
einfach zu groĂ.
Was nicht dokumentiert ist, und womit nicht wirklich zu rechnen war!
Es war einfach zum Verzweifeln!
Immer wieder AbstĂŒrze mit irrsinnigen FehlÂfunktionen.
SchlieĂlich wurde ein BaudratenÂquarz eingesetzt, und alles lĂ€uft wunderbar.
Bis auf die Echtzeituhr, die ist erst mal totgelegt.
Und der Controller braucht etwas mehr Strom.
ZusĂ€tzlich wurde der MOSFET ĂŒberbrĂŒckt und ein Elko spendiert.
Nun wackeln die A/D-Wandler nicht mehr so elend.
Am (fehlenden) Reset-Pullup hat's nicht gelegen.
Der Brownout-Detektor wurde aktiviert.
Ein Pin wird frei.
Konsequenz: Die störÀrmere Speisung der Potenziometer mit AUCC
wurde eingebaut. Dazu Tiefpasskondensatoren.
Und der âriesigeâ Quarz.
Die EingÀnge des AVR lassen sich nicht als Schmitt-Trigger gebrauchen.
Daher ist eine rein passive Impulsfilterschaltung unmöglich,
und es muss/sollte fĂŒr den Tacho die âbewĂ€hrteâ Schaltung
vorgesetzt werden.
Inzwischen gruselt's mir vor einer Software-Lösung, und ein paar
Einzelgatter habe ich noch 'rumliegen.
Konsequenz: Erfordert Platinentwurf, und da kommt gleich mal der
piepslige DCK-Typ mit 0,65 mm Pinabstand weg.
Die Servo-Stecker drÀngeln. Böser Verdacht:
Der Pinabstand am Fernbedienungs-EmpfÀnger ist nicht 2,54 mm.
TatsÀchlich!! Der Spezial-Pfostenstecker hat einen Pitch von 2,64 mm!
Gibt's nirgendwo zu kaufen.
Deshalb hat sich Adafruit (?) damit beholfen, die PWM-AusgÀnge
im Viererblock anzuordnen, um weniger zu drÀngeln.
Sie wussten das also. Irgendwoher.
Konsequenz: Wurde im Platinentwurf beachtet.
DrÀngelt immer noch, aber es ist alles steckbar.
Dass der Löffel (Schaufel) des Radladers nicht unabhÀngig
von der Stellung des Hubarms steht ist anzunehmen und
vermutlich vorbildgerecht.
Aber das Viereckgelenk fĂŒr den Löffel
hat eine Unstetigkeit (nennt man das so?):
Das Heben des Arms funktioniert nicht mit komplett heruntergeklapptem
Löffel, es klemmt bei 3/4 der Hubhöhe.
Na gut, kommt eher selten vor,
aber so ist die Kinematik nicht kollisionsfrei!
Ein Regler wĂŒrde sich âzu Tode regelnâ.
Konsequenz: Das ist vom Anwender (IÂČC-Master) zu beachten.
Aus dem Schneider bin ich mit der Wahl des ATmega48
in Durchsteck: So lieĂ sich bei mangelndem Flash-Speicher
(nur wegen Gleitkomma, spĂ€ter unnötig) schnell auf ATmega328 âaufkeulenâ.
Konsequenz: Auch der Platinentwurf verwendet den Durchsteck-Typ.
Obwohl man mit SMD mehr Platz und 2 A/D-Wandler mehr hat,
mit ATmega328B sogar mehr Ein-/AusgÀnge.
Mal schnell dem Raspberry das Zerstören der ”-SD-Karte austreiben
ist immer noch ungelöst!
Hier wird ein Raspberry mit angeschlossenem 7"-Touchscreen eingesetzt.
Mit vcgencmd otp_dump
kann man den OTP-ROM auslesen,
und irgendwie kann man den auch setzen (von wegen One-Time).
An Adresse 17 ist (angeblich) folgendes DWORD:
Mit dem Standardwert 0x1020_000A
und dem zu setzenden Wert
0x3020_000A
Schon geradezu zu erwarten ist, dass das Setzen von Bit 29
umstĂ€ndlich-verrĂŒckt ist:
Unter [all]
ist in /boot/config.txt die Zeile
program_usb_boot_mode=1
einzubauen,
und (von SD-Karte) neu zu starten.
Das setzt das Bit 28.
Erst ein paar Tage spĂ€ter kam ich schlieĂlich zur Funktion:
Oh, ein ATmega-Bug! Oder zumindest ganz schön unterdokumentiert:
Bei Slave-IÂČC-Ausgabe kam es sporadisch zu fĂ€lschlich gesetztem Bit 7
beim Raspberry als EmpfÀnger.
Das brachte mich auf die Idee, dass:
Abhilfe schafft ein âverlĂ€ngertesâ Clock-Stretch, ein Delay von
4 Mikrosekunden, zwischen dem Schreiben von TWDR
und TWCR
Weitere Probleme mit IÂČC bestehen weiterhin:
Oh, ein Raspberry-Bug!
Hier ist's beschrieben:
Auch wenn Broadcom beteuert, dass das IÂČC-Interface
IÂČC-kompatibel ist, das ist auch beim Raspberry Pi 4 nicht der Fall!
Mit dem Oszilloskop auf der Fehlersuche sah das Signal
1A wie aus dem Bilderbuch aus:
Keine verschliffenen Flanken, keine Ăberschwinger, Vor- und Nachhaltezeiten
korrekt wenn auch manchmal grenzwertig.
Aber wehe wenn der ATmega mit seinem Clock-Stretch kommt,
da gibt es Takt-Nadeln! Getestet mit Raspberry Pi 3B+.
Die angepriesene Lösung mit dem Pingpong-Treiber
lieĂe sich sicherlich verbessern, wenn man Einzelbytes
mit der Broadcom-IÂČC-Hardware senden/empfangen könnte,
also ohne Start- und Stoppsequenz.
So wie beim ATmega. Das ist aber (erst mal) nicht mein Bier.
Das klappt sogar mit âŠdelay_us=1 und ergibt ca. 330 kHz SCL-Takt.
Mit dem 1 m langen Kabel sind die Flanken etwas abgerundet,
trotzdem ist die Kommunikation fehlerfrei. Nein!
Bis auf das Problem, dass beim ATmega manchmal SDA(!) auf Lo klemmt.
Muss noch geklÀrt werden; bis jetzt ()
tut's eine Watchdog-Routine (via OCR2B) in der Firmware auflösen.
Achtung: Die neue Testsoftware öffnet standardmĂ€Ăig /dev/i2c-3!
FĂŒr die (immer schon vorhandenen aber nun massiv,
vor allem bei MausÂbewegung) auftretenden KommunikationsÂfehler
wurde die Raspberry-Software mit einem Debug-Ausgang versehen,
der derzeit nur manchmal funktioniert.
Aber wenn, dann gibt es tatsÀchlich auch ein Problem!
Lösung: i2c_gpio_delay_us=2
muss es sein!
=1 geht nicht!! (Hier: Raspberry Pi 3)
Wer auch immer solche Kernel-Module baut!
Dadurch sinkt die SCL-Frequenz von 330 kHz auf 200 kHz,
und die mittlere Gesamt-AbfrageÂdauer des TestÂprogramms
(alle Schichten) betrÀgt 8 ms.
Drei Wochen spÀter: Oh nein! Es geht immer noch nicht!
Der Fehler ist nur seltener geworden, ca. aller 5 Minuten einer.
Die Möglichkeit der Vollgrafikausgabe bewegte mich zunÀchst nach
X11.
Immerhin hatte ich dafĂŒr mal vor langer Zeit (um 1997) ein Programm erstellt:
Einen Videotext-Archiv-Betrachter.
Geht heute noch.
Auch damals bin ich ĂŒber das Problem mit den mangelhaften Fonts gestolpert,
aber auch heutzutage gibt es keine funktionierende UTF-8-UnterstĂŒtzung
und keine proportionale Schrift, die ansehnlich ist.
Weder auf dem Raspberry lokal, noch unter Xming fĂŒr Windows,
der die Windows-Schriften verwenden könnte.
Wie ich (durch das Studium veröffentlichter WireShark-Protokolle) herausfand,
generieren moderne X11-Anwendungen (etwa Firefox) die Schrift selber
und ĂŒbertragen das gesamte Bild per bitblt
.
Na schönen Dank auch!
Das benötigt massiv Netzwerk-Bandbreite und ist fĂŒr die Remote-Darstellung
schnell verÀnderlicher Werte so ziemlich ungeeignet.
Ein X11-Beispiel
fĂŒr eine einfache, mehrsprachige MessageBox
funktioniert bei mir auf Teufel-komm-raus nicht.
(Jedenfalls nicht fĂŒr andere Sprachen auĂer 7-Bit-Englisch.)
Schade auch dass weder Putty noch LXTerminal keine
ReGIS-Grafik unterstĂŒtzt,
was wenigstens ein bisschen weiterhelfen wĂŒrde.
WÀre brauchbar um Oszillogramme darstellen zu können.
Der Notbehelf Braille-Zeichen
ist zu grobpixlig und hat Farbprobleme wenn sich mehrere Grafen schneiden.
230504: Nun ist mir schon zum zweiten Mal ein ATmega328P
ĂŒber den Weg gelaufen, der eine erhöhte Stromaufnahme zeigte!
(100 mA bei 4 V, 70 mA bei 3,3 V, normal 7 mA.)
Diesmal versagte auch der Pullup an ICP = PB0.
(Der erste war aus dem Arduino des Schaltschranks.)
Entweder war es derselbe (ich hatte den aber IMHO weggeworfen recycelt)
oder die ATmega328P sind empfindlicher (auf was?) als ich dachte.
Ein GlĂŒck dass genĂŒgend herumliegende Arduinos fĂŒr schnellen Nachschub sorgen.
230509: Huch? Die zweite USV X728 hat einen anderen Mikrocontroller.
Dieser sieht wie ein umgelabelter ATtiny45-SO aus. Denn die
âĂŒberraschend breiten Flatschenâ gab's nur bei Atmel.
Und IMHO nur bei ATtinyX5,
nicht beim (hier sicherlich mehr als ausreichenden) ATtiny13.
Immerhin, der Bug mit dem prellenden Taster tritt hier nicht auf.
Da hat man wohl nachgebessert.
Huch? Eine dritte USV gleichen Typs sieht schon wieder etwas anders aus und hat als Chip wieder den (geratenen) PIC12F508. Also hatte man ein paar Cent Kosten gespart, und die Version mit dem (etwas teureren) ATtiny45 ist die alte Version.
230704: Der Raspberry-4-Compute ist endlich da. Ich hatte einen zerstört, als ich mit Tastspitzen am GPIO-Header der TrĂ€gerplatine abgerutscht bin. Zerforscht sozusagen. FĂŒr 120 âŹ, nicht wie sonst 39 âŹ. Obendrein eine Light-Version ohne WLAN. Der Unterschied als Foto. Findet keine SD-Karte! Ein Bug?