Anleitung Firmware 2.10 - ripper121/RoboTrickler GitHub Wiki
Stand: Firmware 2.10.
- Verbinde die Steuereinheit mit der Waage über den RS-232-Stecker.
- Verbinde die Steuereinheit mit dem Trickler.
- Stelle sicher, dass sich die SD-Karte in der Steuereinheit befindet.
- Schalte die Waage an und nulle diese mit leerer Pulverpfanne (TARE).
- Verbinde die Steuereinheit mit dem Netzteil.
Im Display der Steuerung sollte nun das gleiche Gewicht wie auf der Waage angezeigt werden.
Falls dies nicht der Fall ist, überprüfe die Einstellungen der Waage und die Konfiguration, besonders scale.protocol und scale.baud.
Der Robo-Trickler startet mit dem in config.txt eingetragenen Profil. Auf der SD-Karte ist standardmäßig avg vorhanden. Stelle das Zielgewicht im Display ein und drücke auf Start. Starte erst, wenn die Waage mit leerer Pulverpfanne genullt ist.
Wähle im Profil-Tab ein passendes Pulver aus. Falls das gewünschte Pulver nicht vorhanden ist, kann zum Testen das avg Pulverprofil genommen werden. avg ist ein Durchschnittsprofil und funktioniert mit vielen Pulvern, ist aber nicht optimal. Für gutes und schnelles Trickeln sollte jedes Pulver ein eigenes Profil bekommen.
Für jedes Pulver muss ein eigenes Profil angelegt werden, um ein optimales Trickeln zu gewährleisten.
Jede Waage muss vor dem Gebrauch warm laufen, je nach Modell bis zu 1 Stunde. Sonst kann der angezeigte Wert driften und die Waage geht nach dem Leeren der Pulverpfanne nicht sauber auf 0 zurück.
Weitere Informationen:

Pulverprofile liegen ab Firmware 2.10 in diesen Ordnern auf der SD-Karte:
/profiles
Der Profilname in config.txt enthält nur den Dateinamen ohne .txt. Beispiel:
{
"profile": "avg"
}dazu gehört die Datei:
/profiles/avg.txt
Die Profilliste im Display und über die Web-API enthält nur gültige Profile. Ungültige Profile werden beim Scannen ignoriert und im Display gemeldet. Wenn das aktuell ausgewählte Profil beim Start oder beim Starten des Trickelns nicht geladen werden kann, benennt die Firmware die Datei nach .cor.txt um, stellt auf calibrate um und startet neu.
Das calibrate Profil liegt als /profiles/calibrate.txt auf der SD-Karte:
{
"actuator": "stepper1",
"steps": 20000,
"speed": 200,
"reverse": false
}Dieses Profil dreht den Trickler 100 Umdrehungen, weil 200 Schritte einer Umdrehung entsprechen.
Die Waage muss für den automatischen Kalibrierlauf auf Grain gestellt sein. Die Firmware übernimmt den gemessenen Wert direkt als Grain und zeigt die Bestätigung als gn an.
Vorgehen:
- Wähle im Profil-Tab
calibrate. - Drücke Start.
- Lasse den Kalibrierlauf bei frisch gefülltem Trickler am besten 3-mal laufen, damit das Rohr gleichmäßig gefüllt ist. Klicke dabei bei
Create profile from calibration?aufNo, damit noch kein neues Profil erstellt wird. - Bestätige am Display
Create profile from calibration?mitYes. - Nach dem Kalibrierlauf liest die Firmware das stabile Gewicht von der Waage.
Die Firmware erstellt dann automatisch ein neues Profil in /profiles mit dem Namen powder_000.txt, powder_001.txt usw., wählt dieses Profil aus und speichert es in config.txt.
Der automatisch erzeugte Profilaufbau basiert auf der gemessenen Pulvermenge pro 100 Umdrehungen. unitsPerThrow wird aus Kalibriergewicht / 100 berechnet. Die Firmware legt fünf Feinschritte an (1.929, 0.965, 0.482, 0.241, 0.000 gn) und verwendet dabei einen Sicherheitsfaktor von 65 % für die berechneten Schrittzahlen.
Alternativ kann ein Profil mit profileGenerator.html erzeugt werden. Die Datei liegt auf der SD-Karte unter:
/system/profileGenerator.html
Wenn WLAN aktiv ist, ist der Generator auch im Webbrowser erreichbar.
Video Anleitung:
- Öffne den Profile Generator.
- Trage bei
Weight of calibration rundie Pulvermenge des Kalibrierlaufs ein. - Wähle die Einheit
GramoderGrain. - Stelle bei Bedarf
Weight gap,Stepper speed rpm,Calculation tolerance,Threshold for alarm,ToleranceundReverseein. - Klicke auf
Generate Profile. - Trage einen Profilnamen ein, z.B.
n140. - Klicke auf
Downloadoder, wenn du über den Webserver arbeitest, aufSave. - Speichere das Profil als
.txtin/profiles. - Starte den Trickler neu, damit die neue Profilliste geladen wird.
Der Generator erzeugt aktuell general.measurements mit 20 und die fünf Feinschritte mit 2, 2, 5, 10 und 15 Messungen.

Der Webserver enthält zusätzlich profileEditor.html. Damit können Profile im neuen Format bearbeitet und alte Profile in das neue Format übernommen werden. Alte Felder wie weight und stepsPerUnit werden vom Editor in diffWeight und unitsPerThrow umgerechnet.
Das Profil muss zur Einheit der Waage passen. Wenn die Waage in Grain ausgibt, müssen targetWeight, diffWeight, tolerance, alarmThreshold, weightGap und unitsPerThrow ebenfalls in Grain angegeben werden. Wenn die Waage in Gramm ausgibt, müssen diese Werte in Gramm angegeben werden.
Um Gramm in Grain umzurechnen:
Grain = Gramm * 15.4323583529
Empfehlung: Lege für jedes Pulver getrennte Profile für Gramm und Grain an, z.B. n140_g.txt und n140_gn.txt.
Beispiel für das neue Profilformat:
{
"general": {
"targetWeight": 40.000,
"tolerance": 0.000,
"alarmThreshold": 1.000,
"weightGap": 1.000,
"measurements": 5
},
"actuator": {
"stepper1": {
"enabled": true,
"unitsPerThrow": 0.375,
"unitsPerThrowSpeed": 200
},
"stepper2": {
"enabled": false,
"unitsPerThrow": 10.000,
"unitsPerThrowSpeed": 200
}
},
"rs232TrickleMap": [
{
"diffWeight": 1.929,
"actuator": "stepper1",
"steps": 669,
"speed": 200,
"reverse": false,
"measurements": 2
},
{
"diffWeight": 0.965,
"actuator": "stepper1",
"steps": 335,
"speed": 200,
"reverse": false,
"measurements": 2
},
{
"diffWeight": 0.482,
"actuator": "stepper1",
"steps": 167,
"speed": 200,
"reverse": false,
"measurements": 5
},
{
"diffWeight": 0.241,
"actuator": "stepper1",
"steps": 84,
"speed": 200,
"reverse": false,
"measurements": 10
},
{
"diffWeight": 0.000,
"actuator": "stepper1",
"steps": 5,
"speed": 200,
"reverse": false,
"measurements": 15
}
]
}-
targetWeight: Wird beim Laden des Profils übernommen. Änderungen am Display werden beim Starten des Trickelns wieder in dieses Profil geschrieben; Änderungen über/setTargetwerden sofort geschrieben. -
tolerance: erlaubte Abweichung zum Zielgewicht. Bei0.000muss der Zielwert ohne Toleranz erreicht werden. -
alarmThreshold: Überwurf-Grenze. WenntargetWeight + alarmThresholderreicht oder überschritten wird, stoppt die Firmware, piept mehrfach und zeigt eine Warnung an. Bei0ist der Alarm deaktiviert. -
weightGap: Abstand zum Zielgewicht, bei dem der automatische erste Grobwurf enden soll. -
measurements: Anzahl stabiler Messwerte, die vor dem ersten Wurf und nach dem automatischen Grobwurf abgewartet werden.
-
stepper1undstepper2: Einstellungen für Trickler 1 und Trickler 2. -
enabled: aktiviert den jeweiligen Stepper für den automatischen ersten Grobwurf. -
unitsPerThrow: Pulvermenge pro Umdrehung beiunitsPerThrowSpeed. Die Einheit muss zur Waage passen. -
unitsPerThrowSpeed: Geschwindigkeit für den automatischen ersten Grobwurf.
Der automatische Grobwurf läuft nur beim ersten Wurf. Die Firmware berechnet aus Zielgewicht, aktuellem Gewicht, weightGap und unitsPerThrow die benötigten Schritte. Dabei wird erst stepper2, danach stepper1 verwendet, wenn beide aktiviert sind.
rs232TrickleMap ist die eigentliche Trickel-Tabelle. Es sind maximal 16 Einträge möglich.
-
diffWeight: Abstand zum Zielgewicht, ab dem dieser Schritt verwendet wird. -
actuator:stepper1oderstepper2. -
steps: Motorschritte für diesen Wurf. 200 Schritte entsprechen einer Umdrehung. -
speed: Motorgeschwindigkeit in U/min. Sinnvolle Werte liegen meist zwischen 10 und 200. -
reverse:truekehrt die Drehrichtung um, Standard istfalse. -
measurements: Anzahl stabiler Messwerte, die nach diesem Wurf abgewartet werden.
Die Firmware wählt den ersten Eintrag, dessen diffWeight noch zum Abstand zwischen aktuellem Gewicht und Zielgewicht passt. Je näher das Zielgewicht kommt, desto kleinere diffWeight-Einträge werden verwendet.
Hinweise:
- Bei zu kleinen
stepskann es sein, dass sich der Trickler nicht bewegt. - Niedrigere Geschwindigkeiten fördern je nach Pulver oft mehr Pulver pro Umdrehung.
- Zu viele
measurementsmachen das Trickeln langsam. Am Anfang reichen meist 2 Messungen, am Ende sind 10 bis 15 sinnvoll.
Für mehrere Trickler wird actuator verwendet:
{
"general": {
"targetWeight": 40.000,
"tolerance": 0.000,
"alarmThreshold": 1.000,
"weightGap": 1.000,
"measurements": 5
},
"actuator": {
"stepper1": {
"enabled": true,
"unitsPerThrow": 0.200,
"unitsPerThrowSpeed": 200
},
"stepper2": {
"enabled": true,
"unitsPerThrow": 2.000,
"unitsPerThrowSpeed": 200
}
},
"rs232TrickleMap": [
{
"diffWeight": 2.000,
"actuator": "stepper2",
"steps": 200,
"speed": 200,
"reverse": false,
"measurements": 2
},
{
"diffWeight": 0.250,
"actuator": "stepper1",
"steps": 80,
"speed": 200,
"reverse": false,
"measurements": 5
},
{
"diffWeight": 0.000,
"actuator": "stepper1",
"steps": 5,
"speed": 200,
"reverse": false,
"measurements": 15
}
]
}Falls die SD-Karte defekt ist oder beim Bearbeiten Fehler aufgetreten sind, können die SD-Karten-Daten hier neu heruntergeladen werden. Die SD-Karte muss mit FAT32 formatiert sein.
Unter Windows kannst du auch Create_SD_Card.bat nutzen. Gib den Laufwerksbuchstaben ein und die SD-Karte wird automatisch erstellt.
Video Anleitung:
- Stecke die Micro-SD-Karte in den PC.
- Lade Etcher herunter: https://etcher.balena.io/#download-etcher
- Lade das neueste
SD-Files.imgherunter: https://robo-trickler.de - Starte Etcher.
- Wähle
SD-Files.imgaus. - Flash.
- Fertig.
Die Konfiguration liegt als /config.txt im Hauptverzeichnis der SD-Karte.
{
"wifi": {
"ssid": "MeinWlanName",
"psk": "MeinWlanPassword",
"IPStatic": "",
"IPGateway": "",
"IPSubnet": "",
"IPDNS": ""
},
"scale": {
"protocol": "GG",
"customCode": "",
"baud": 9600
},
"profile": "avg",
"beeper": "done",
"fw_check": true
}-
wifi.ssid: WLAN-Name. Nur 2.4 GHz WLAN wird unterstützt. -
wifi.psk: WLAN-Passwort. Bei offenem WLAN leer lassen. -
wifi.IPStatic: optionale statische IP-Adresse. -
wifi.IPGateway: Gateway-IP, nötig bei statischer IP. -
wifi.IPSubnet: Subnetzmaske, nötig bei statischer IP. -
wifi.IPDNS: optionaler DNS-Server. Wenn leer, nutzt die Firmware8.8.8.8. -
scale.protocol: unterstützte Werte sindGG,SBI,KERN,KERN-ABT,AD,CUSTOMund leer für kein aktives Anfragekommando. -
scale.customCode: nur beiCUSTOM; Kommando, mit dem Messwerte von der Waage angefordert werden. -
scale.baud: Baudrate der Waage, meistens9600. -
profile: Profilname ohne.txt. Das Zielgewicht kommt ausgeneral.targetWeightim gewählten Profil. -
beeper:done,button,bothoderoff. -
fw_check:trueprüft beim WLAN-Start, ob eine neue Firmware verfügbar ist.
Wenn config.txt fehlt oder nicht gelesen werden kann, erzeugt die Firmware eine Standard-Konfiguration, zeigt eine Fehlermeldung an und startet neu.
Auf der SD-Karte befindet sich system/configGenerator.html, welcher das Erstellen einer Konfiguration erleichtert. Der Generator wird auch über den Webserver bereitgestellt.

Prüfe config.txt und das verwendete Pulverprofil mit dieser Seite. Die Seite zeigt Formatierungsfehler in den Dateien an und korrigiert sie gegebenenfalls.
- Pulverprofile müssen gültiges JSON sein.
Es gibt zwei Möglichkeiten, ein Firmware-Update durchzuführen:
- Kopiere
update.binin das Hauptverzeichnis der SD-Karte und starte den Trickler neu. Nach erfolgreichem Update löscht die Firmware die Datei und startet erneut. - Führe das Update über den Webbrowser mit
FW Updateoderhttp://robo-trickler.local/fwupdatedurch.
Die neueste Firmware findest du hier.
Um den WLAN-Modus zu aktivieren, trage ssid und psk in config.txt ein.
Nur 2.4 GHz WLAN wird unterstützt.
Beim Start zeigt der Trickler Connect to Wifi... an. Bei erfolgreicher Verbindung steht im Info-Tab die IP-Adresse.
Je nach Router erreichst du den Trickler über:
http://robo-trickler.local
http://robo-trickler
http://<IP-Adresse>
Beispiel:
http://192.168.178.22

Die Startseite lädt /system/index.html von der SD-Karte. Von dort erreichst du:
- Trickler-Steuerung
- File Browser
- Profile Generator
- Profile Editor
- Configuration Generator
- Firmware Update
- Reboot
Mit dem File Browser kannst du Dateien auf der SD-Karte über den Webbrowser bearbeiten. Änderungen an config.txt oder Pulverprofilen werden erst nach einem Neustart übernommen.
Jede Änderung an einer Konfigurationsdatei oder einem Pulverprofil wird erst nach einem Neustart des Tricklers übernommen.

Diese Endpunkte können im Browser oder aus einer eigenen Steuerung aufgerufen werden:
-
GET /getWeight: aktuelles Gewicht lesen. -
GET /getTarget: Zielgewicht lesen. -
GET /setTarget?targetWeight=WERT: Zielgewicht setzen und im aktuellen Profil speichern. Erlaubt sind Werte größer0und kleiner999. Beispiel:/setTarget?targetWeight=40. -
GET /getProfile: aktuelles Profil lesen. -
GET /getProfileList: Liste der erkannten Profile als JSON lesen. -
GET /setProfile?profileNumber=NUMMER: Profil über die Nummer aus der Profilliste wählen. -
GET /system/start: Trickeln starten. -
GET /system/stop: Trickeln stoppen. -
GET /reboot: Trickler neu starten. -
GET /fwupdate: Firmware-Update-Seite öffnen. -
POST /update: Firmware-Datei hochladen. -
GET /list?dir=/PFAD: Dateien im SD-Verzeichnis auflisten. -
PUT /system/resources/edit?path: Datei oder Ordner anlegen. -
POST /system/resources/edit: Datei hochladen. -
DELETE /system/resources/edit?path: Datei oder Ordner löschen.
Die Firmware fragt die Waage je nach scale.protocol so ab:
-
GG: G&G KommandoESC p CR LF. -
AD: A&D KommandoQ CR LF. -
KERN: Kern Kommandow. -
KERN-ABT: Kern ABT KommandoD05 CR LF. -
SBI: Sartorius Balance Interface KommandoP CR LF. -
CUSTOM: sendetscale.customCode. - leer oder unbekannt: wartet nur auf eingehende Daten.
Die Firmware liest die Antwort bis LF, extrahiert die Zahl und erkennt g, gn oder gr aus dem Text der Waagenantwort.
Es sollten alle G&G Waagen mit RS-232 kompatibel sein.
Eine Empfehlung für Wiederlader direkt von G&G: https://gandg.de/download/anleitungen/Wiederlader%20Infobrosch%C3%BCre.pdf
Man sollte alle Filter ausschalten und die Sensibilität auf maximal stellen. Falls der Gewichtswert zu stark schwankt, spiele etwas mit C1 und C2.
Anleitung für G&G Waagen: https://gandg.de/index.php/downloads
Beispiel Einstellung für die PLC100:
C1 - 0 Sensibilität
C2 - 0 Schwingungsfilter
C3 - 6 Baudrate (9600) oder 0 (9600 baud, stream mode), 1 (9600 baud, auto print on stable)
C4 - 27 Gerätenummer
C5 - 0 Autom. Abschaltung
C6 - 0 Belegung der Print-Taste
C7 - 0 Hinteres Display abschalten
Video Anleitung:
Male Adapter
Jumper: RXD links, TXD rechts

Lötpunkte Unterseite PCB (X geschlossen, leer offen):

Empfehlung: G&G PLC100BC, max. 100 g und 0,001 g Messbereich.
- https://waage-shop.com/PLC-Feinwaagen-Tischwaage-Praezisionswaagen_10
- https://www.amazon.de/PLC-Baureihe-Pr%C3%A4zisionswaage-Industriewaage-Tischwaage-Batteriebetrieb/dp/B00ZCRLPY6
Empfehlung: G&G JJ100B, max. 100 g und 0,001 g Messbereich. Die G&G JJ200B wurde ebenfalls getestet.
- https://waage-shop.com/JJ-B-Praezisionwaage-Laborwaage
- https://www.amazon.de/JJ100B-Pr%C3%A4zisionswaage-Laborwaage-Industriewaage-Tischwaage/dp/B004S5V09I
Wer es ganz genau haben will, kann diese Serie benutzen. 0,1 mg Messbereich.
- https://waage-shop.com/JJ-BC-Industrie-Analysenwaage-mit-externer-Justierung-120g-01mg-JJ124BC
- https://www.amazon.de/Industrie-Analysenwaage-Pr%C3%A4zisionwaage-Feinwaage-Laborwaage/dp/B00AQZEPZK
Es sollten alle Sartorius Waagen mit RS-232 kompatibel sein. Implementiert ist das Sartorius Balance Interface (SBI).
Female Adapter
Jumper: RXD links, TXD rechts

Lötpunkte Unterseite PCB (X geschlossen, leer offen):

- DAT.PROT. - SBI
- BAUD - 9600
- PARITY - NONE
- HANDSHK. - NONE
- DATABIT - 8 BITS
- KOM. AUSG. - AUTO.OHN
- ABBRUCH - AUS
- AUTO.ZYK - JEDER
- FORMAT - 16 ZEICH.
- AUTO.TARA - AUS
- DEZ.ZEICH. - DEZ.PUNKT

https://www.sartorius.com/download/492950/manual-cubis-mce-precision-balances-wmc6024-d-data.pdf
Adapter für Waagen mit 25-Pin-Port:
https://www.amazon.de/Nedis-Serielles-Kabel-9-Pin-Buchse-Vernickelt/dp/B0CW1SLW3G
Einstellungen für neue Waagen:
https://github.com/ripper121/RoboTrickler/blob/main/Doc/Sartorius_Trickler_Parameter.pdf
Kern 440-21a, Kern PCB 100-3, Kern ABT-120 4NM und Kern EG-220 3NM wurden erfolgreich getestet.
Male Adapter
Jumper: RXD rechts, TXD links

5-Pol Stecker:


1 rot RXD
2 weiß GND
3 gelb
4 grün TXD
5 blau
https://www.amazon.de/dp/B000LB4Q7G
Lötpunkte Unterseite PCB (X geschlossen, leer offen):

Betriebsanleitung Kern PCB 100-3
Einstellungen für Kern PCB 100-3, die Kern 440-21a hat leider keine Filter-Einstellung:

Female Adapter
Jumper: RXD links, TXD rechts

Lötpunkte Unterseite PCB (X geschlossen, leer offen):

https://www.aandd.jp/products/manual/balances/gxa_com_de.pdf
- Stream-Modus
- Baudrate 9600
- Datenbits 8 Bits
- Parität keine
- Stoppbits 1 Bit
- Code ASCII
https://www.aandd.jp/products/manual/balances/gp_de.PDF
Kapitel 9.3:
dougt -> Prt -> 3dougt -> int -> 0dougt -> PUSE -> 05iF -> bPS -> 45iF -> btPr -> 25iF -> t-UP -> 0
Optional:
bASFnc -> Cond 0bASFnc -> 5Pd -> 1bASFnc -> Pnt -> 0
SBS-LW-200A
- 2COM
- 9600 brt
Da Firmware 2.10 kein eigenes STE Protokoll mehr auswertet, nutze für streamende Steinberg-Waagen ein leeres scale.protocol oder CUSTOM, falls deine Waage ein Anfragekommando benötigt.

Male Adapter
Jumper: RXD links, TXD rechts

Lötpunkte Unterseite PCB (X geschlossen, leer offen):

Lade usb-flash.zip herunter: https://github.com/ripper121/RoboTrickler/releases/latest
Schließe die Steuerung mit dem USB-Kabel an den PC an und verbinde die Steuerung mit dem Netzteil.
Für Windows:
Entpacke usb-flash.zip und öffne flash.bat, dann drücke Enter.
Für Mac und Linux:
Entpacke usb-flash.zip und benutze esptool.py.
Download: esptool.py
esptool.py --chip esp32 erase_flash
esptool.py --chip esp32 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 80m --flash_size 4MB 0x1000 ./RoboTricklerUI.ino.bootloader.bin 0x8000 ./RoboTricklerUI.ino.partitions.bin 0xe000 ./boot_app0.bin 0x10000 ./RoboTricklerUI.ino.bin
Fülle den Standfuß mit etwas Schwerem, z.B. Bleischrot oder Gips.
Prüfe vor der Montage der Lager, ob das Alurohr in die Lager passt. Sollte es nicht passen, klemme das Alurohr in einen Akkuschrauber oder eine Bohrmaschine und schleife mit Sandpapier den Durchmesser des Rohres herunter. Prüfe regelmäßig, bis alles passt.
Gib vor der Montage der Lager einen Tropfen Sekundenkleber an die Stelle, an der die Lager sitzen werden. Das gleiche gilt für die Stelle der Motor-Kupplung, in die das Alurohr kommt. Trickler-Körper und Standfuß werden ebenfalls miteinander verklebt.

3D-Ansicht: https://a360.co/3uPOsYw

Verpolung beschädigt den RS232 Stecker.
Korrekte Verkabelung:
| Steuerung | RS232 Stecker |
|-----------|---------------|
| 3V3 | VCC |
| GND | GND |
| SDA | TXD |
| SCL | RXD |


Verpolung beschädigt den Motor-Treiber.
Hier sieht man, wie der Motor-Treiber richtig herum gesteckt ist:

Standard-Treiber ist der A4988 mit Full Step. Die Firmware 2.10 initialisiert beide Stepper mit Full Step.

Achtung: Manche als A4988 gekennzeichnete Treiber sind in Wirklichkeit TMC2208. Man merkt es daran, dass der Motor sehr langsam dreht.
Einstellung für andere Treiber:

Kann verschraubt werden, ich verklebe es aber einfach mit Sekundenkleber.

3D-gedruckte Version:

Falls das Alurohr nicht in die Lager passt, muss man es etwas nachbearbeiten.
Dazu das Rohr in eine Bohrmaschine einspannen und mit Schleifpapier bearbeiten.




