PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Graupner HoTT Telemetrie-Sensoren Eigenbau DIY | Telemetrie-Protokoll entschlüsselt



Seiten : [1] 2

flying-doctor
15.08.2011, 11:03
Graupner-Telemetrie-Protokoll "entschlüsselt":
Die gute Nachricht zuerst: die serielle Kommunikation ist seit gestern abend klar! :-)
Leider bin ich E-Technik-Laie. Kann nur etwas programmieren, aber kenne mich mit Hardware nicht so gut aus. Daher suche ich Mitmacher für ein spannendes Gemeinschaftsprojekt! Lust? ;)


Zusammenfassung / Abstract:
Es soll ein sehr leichter Spannungssensor und evtl. Höhensensor entwickelt werden, der an den Empfänger GR-16/12 angeschlossen werden kann. Innerhalb der nächsten Wochen/Monate soll ein funktionierender Prototyp entstehen und im Flug getestet werden.

Die Ausgangslage / Ziele:
Die Firma Graupner bietet mit ihrer HoTT(R)-Technologie meines Erachtens eine exzellente Fernsteuerung an. Die Sensoren sind prima, ich setze sie seit April oft ein.

Es gibt nur leider ein Problem: Für kleine Slowflyer, Shockies, Merlin & Co. sind die im Augenblick angebotenen Sensoren leider zu groß und zu schwer. Darum möchte ich gerne
selbst einen einfachen Spannungssensor für bis zu 3 Lipozellen entwickeln. Das Ganze soll mit Kabeln, Schrumpfschlauch und Vorwiderständen höchstens 8-10 Gramm wiegen. Realistisch ist ein robuster, alltagstauglicher Sensor unter 20 €. Ich sehe das als Übergangslösung solange, bis die Firma Graupner selbst einen kleineren Sensor ins Angebot nimmt. Verkaufen möchte ich nichts, sondern das zu entwickelnde Sensorboard als Open Source der Allgemeinheit kostenlos zur Verfügung stellen :)


Vorschlag für einen Projektnamen:
Ein Projekt braucht einen Namen :)
"open tecodino-Sensor".:p
Dies steht für telemetry compatible arduino sensor
Da die Markenrechte der Firma Graupner auf keinen Fall geschädigt werden dürfen, möchte ich darauf hinweisen, dass hier Markennamen wie HoTT oder Graupner schützenswert sind und in diesem Thread nicht weiter verwendet werden sollten! Außer, um darauf hinzuweisen, dass man zum Betrieb des tecodino-sensors noch einen original HoTT-Empfänger von Graupner kaufen sollte!

Anschluss des Tecodinos an den Empfänger:
Die Graupnermodule z.B. GAM, wird mit einem üblichen Servokabel an einen Empfänger z.B. GR-16 angeschlossen. Über die rote Litze des servokabels wird das Modul mit +4,8 V (?)Spannung versorgt. Die Sensoren liefern seriell diverse Messdaten über 2 Leitungen an das Empfängermodul (Braun = GND, Orange = Signal)

Schema: General-Air-Modul <------> GR-16/GR-12 - - - - 2,4 Ghz > MX-16/12-Fernsteuerung/Sender

Der neu zu entwickelnde Sensor soll genau so an die Empfänger angeschlossen werden:
Tecodino-Sensor <------> GR-16/GR-12 - - - - 2,4 Ghz > MX-16/12-Fernsteuerung/Sender

Das bedeutet, dass der Tecodino die serielle Kommunikation zum GR-16/GR-12 imitieren muss.
:p

flying-doctor
15.08.2011, 11:10
Entschlüsseln der seriellen Kommunikation:
Letzte Woche habe ich einen IKALOGIC-Logic-Analyzer mit 4 Kanälen bestellt
und eine Freeduino-Experiermentierplatine zum Imitieren des herausgefundenen Protokolls.
Am Sonntag wurde gleich probiert, die Kommunikation mitzulesen... sniffing
Das Revers-Engineering verlief sehr easy.

:D

Ich habe nur die Signalkabel zum Sensor mit dem Logicanalyzer verbunden
und versucht, die Signale bei 19200 Baud, 8 Bit als seriellen Datenstrom zu dekodieren.
Die Versuchsanordnung ist hier abgebildet. Weil mir der GAM-Sensor bereits seit längerem zu schwer war, hatte ich im Mai das Gehäuse entfernt...also nicht wundern, wie komisch da aussieht...

Nach 3 Stunden tüfteln (mein erstes Mal....), ergaben die Daten einen Sinn.
Mit systematischem Verändern der Variablen konnte ich leicht sehen,
wie sich die Sensordaten verändern, wenn man Spannung oder Höhe verändert.
Drehzahl und Temperatursensor habe ich nicht, wurde nicht getestet.


mit 3 Einzelzellen-Lipo
Frage des Empfängers (request) 80 8d:
Antwort des General-Air-Modul: 00 7c 8d 00 d0 cf cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 01 30 75 78 00 00 00 00 00 00 00 80 7d 84 00

ohne Einzelzellen Lipos
Frage des Empfängers (request) 80 8d:
Antwort des General-Air-Modul: 00 7c 8d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 01 30 75 78 00 00 00 00 00 00 00 80 7d 15 00


Man sieht deutlich dass Byte 5, 6 und 7 die Spannung der Lipozellen kodieren

Volt: 4.12, 4.12, 4.12
Bytes: CE, CE, CE

Volt: 0.3, 4.12, 0.0
Bytes: 0f, ce, 00

Volt: 0.0, 0.0, 4.04
Bytes: 00,00,ca

Man kann also sagen: der Hexwert ist die Hälfte der Spannung.
CA (dezimal 202) entspricht 10 x 2 x 202 mV = 4.04 V
OF (dezimal 15) entspricht 10 x 2 x 202 mV = 0.30 V

Interessant ist, dass die Graupner-Telemetrie offenbar nur 0.2 mV-Schritte kodieren kann.
;)

Im nächsten Schritt wurde der Logicanalyzer nicht im record-Modus verwendet,
sondern zum Playback. Wenn die gespeicherten Daten zurück gesendet wurden,
wurde auf dem Telemetrie-Display und die korrekte Spannung und Höhe angezeigt.

Die Höhe -10 bis 234 Meter wird im vierten Byte kodiert.
Ich schätze, dass ein weiteres Byte irgendwo die Zehnmeter-Stufen kodiert,
so dass ca. 2700 Meter abgebildet werden können. [?? stimmt das so ??]

Nun müsste man dieses Protokoll mit dem Arduino nachahmen
und am Arduinoboard gemessene Spannungen korrekt kodieren.... ;-)

flying-doctor
15.08.2011, 11:14
Jetzt geht's ans Programmieren....
Dazu brauche ich Hilfe von jemanden, der sich mit Widerständen & Co.
auskennt, ich habe Angst, das Board zu zerstören....


Frage: ist das, was unten steht ok??
:rolleyes:

Ausgangslage:
Der superleichte und kleine Arduino Pro Mini hat nur
eine Größe von 18x33x4 mm und wiegt ca. 2 Gramm :D
(Quelle: http://www.watterott.com/index.php?page=search&page_action=query&keywords=arduino+pro+mini)
Es gibt Versionen für 3,3 oder 5 Volt, so dass die normale Spannung ausreicht,
die regulär aus dem Telemetrieanschluss des GR-16-Empfängers kommt.
Ich hoffe, dass die kleinen Arduinos relativ akku-sparend arbeiten.

Grundsätzlich kann man angeblich einen Analogeingang des Arduino mit
mit einer LiPo-Zelle verbinden, um die Spannung zu messen.
Der User GeKoch hat dazu folgenden Vorschlag:


Vbattery
|
R1
|
-------------- Arduino analog pin
|
R2
|
Ground

(Quelle: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1222109476, 22.09.2008)

ingo_s
15.08.2011, 11:54
Hi,

für die Lipo Überwachung solltest du schon die einzelnen Zellen messen. wenn Du bei Pro mini bleiben willst, am besten ein Sensor spezifisches Basis Board zum aufstecken machen.

Bei den Daten ist sicher noch eine Checksum oder CRC dabei, schon überprüft?

Gruß Ingo

flying-doctor
15.08.2011, 14:09
Hi Ingo,


Heute Abend experimentiere ich weiter.
Bin totaler Anfänger beim µicrocomputer-Entwickeln:rolleyes:
Vielleicht ist ATTiny oder eine andere Plattform besser geeignet.
Ich bin erstmal ganz froh gewesen, dass ich Arduino entdeckt hatte
(kann bisschen C/C++ und Java besser, Assembler leider nur in Grundzügen)
Will aber lernen!!

Es scheint für die Antwort des Sensor keine Prüfsumme zu geben.
Muss das nachher nochmal systematisch prüfen, bevor ich die ersten
Sensordaten nachahme.

Der Empfänger sendet alle 200 ms einen Request.
Und der Sensor antwortet mit einer Gruppe von 36 Bytes,
wenn ich mich nicht verzählt hab. Offenbar unterscheidet
sich die Antwort nur in den Datenbits.

Vielleicht reicht es dem Empfänger-"Bus",
wenn ein fester Datenrahmen nur "sinnvolle" Werte enthält?
:eek:
LG Stefan

Elektro-Andi
15.08.2011, 14:13
Entschlüsseln der seriellen Kommunikation:

Interessant ist, dass die Graupner-Telemetrie offenbar nur 0.2 mV-Schritte kodieren kann.
;)



Hallo,
interessante Sache !
Du möchtest ein Sensor für Anschluss am Balancer?
Zu Berüchsichtigen ist:
Die Spannungen am Balancerstecker sind nicht die Einzelzellenspannungen sondern:

Pin
1 - Masse (-)
2 - Spannung Zelle 1
3 - Spannung Zelle 1+2
4 - Spannung Zelle 1+2+3
5 - u.s.w.....

Da der Andurio nur ein Massepotenzial hat muss er die Differenzspannungen berechnen.
Offensichtlich werden die Spannungswerte an den Empfänger mit 8 Bit (256) Auflösung gesendet.
Somit sollte der Sender jede Zelle bis 5,12V anzeigen können.
Der Andurio hat doch Analogeingänge mit 12 Bit , bei welcher Spannung am Eingang gibt er 4096 ( 12Bit ) aus ?

Mich würde eher ein Sensor für die Gesammtakkuspannung interessieren. Würde diesen dann am Regler anlöten. Am GAM wird die Gesammtspannung ( bis 30 V ) ja auch ohne Balancerstecker ausgegeben, vermutlich mit 12 Bit Auflösung).
Ich möchte nicht jedesmal den Balancerstecker in Flieger einstecken.

Die Warnschwellen sollte man auch einstellen können, ich hoffe diese werden nicht im Sensor gespeichert, müsste man prüfen, einfach Schwelle am Sender einstellen und mit dem Simulator entsprechende Werte an den Empfänger schicken.

Danke für deine Bemühungen
Freue mich schon auf einen "Minisensor für die Akkugesammtspannung" :D
Andi

flying-doctor
15.08.2011, 14:18
für die Lipo Überwachung solltest du schon die einzelnen Zellen messen.


Ja! Stimme Dir voll zu! Unddrei Zellen sollten für kleine Flieger reichen.
Graupner bietet Überwachung von 6 Zellen und Strommessung bis 40 A.



wenn Du bei Pro mini bleiben willst, am besten ein Sensor spezifisches Basis Board zum aufstecken machen.


Mir schwebt eher ein eingeschrumpftes Modul vor. Nur mit einem Servostecker
und einem Lipo-Balancer-Anschluss. Einfach, leicht und trotzdem robust.

Die Frage ist:
wird man die Analog-Inputs mit Vorwiederständen als Spannungssensor missbrauchen können? Glaube schon, brauche nur noch Bestätigung von einem Elektriker/E-Technicker.
Die Inputs verkraften nur < 50 mA...

Mir mit maximal 4.1 Volt Lipospannung und 1 KOhm müsste man doch
auf der sicheren Seite sein, oder?

gecko_749
15.08.2011, 14:31
Moin Stefan,

einen Teil der Arbeit kannst Du Dir vereinfachen indem Du Graupner eine freundliche Mail mit der Bitte um übersendung der Protokollspec schickst.

OK - das hat dann den Nachteil des NDA ...

Gruß

gecko

flying-doctor
15.08.2011, 18:12
Moin Stefan,
einen Teil der Arbeit kannst Du Dir vereinfachen indem Du Graupner eine freundliche Mail mit der Bitte um übersendung der Protokollspec schickst. OK - das hat dann den Nachteil des NDA ... Gruß, gecko


Gute Empfehlung; Hast Du da Erfahrungen?
Mit offizieller Anfrage habe ich auch schon überlegt, aber mich dann
nicht getraut:( und durch selber entschlüsseln lernt man bestimmt mehr, oder?

Reverse-engineering ist hier auch nicht verboten, weil solche einfachen Protokoll-Implementierungen keinen Schutz genießen. Außerdem funktionieren wahrscheinlich alle Sensor-Verbindungen ähnlich. Verboten ist es (zurecht), das Modell-Matching zu kopieren!
Tun wir aber nicht!:p

Selbstverständlich möchte ich der Firma Graupner in keinster Weise schaden!!
Ganz im Gegenteil: ich kaufe bewusst ganz viele Sachen von Graupner und mache
Werbung dafür, weil mich die gute Qualität wirklich überzeugt. Möchte ja keine gewerbliche Konkurrenz zu den ausgereiften Originalsensoren etablieren! Will für mich und ein paar Interessierte Sachen basteln, die ein mittelständisches Unternehmen nicht herstellt.
Kann Graupner auch gar nicht, ohne gleichzeitig den Entwicklungs- und Wartungsaufwand aufzublähen.

gecko_749
15.08.2011, 18:16
Moin,

ja ich hab da Erfahrungen - und zwar gute.

Die Spec liegt hier - aber wie gesagt mit NDA.

Ob ich aber damit etwas machen werde ist noch fraglich da sich inzwischen rausgestellt hat das die Nachrüstmodule keine Sprache können. Damit ist ein großer Vorteil für mich dahin.

Gruß

gecko

flying-doctor
15.08.2011, 18:35
Hallo,
Die Spannungen am Balancerstecker sind nicht die Einzelzellenspannungen sondern:

Pin
1 - Masse (-)
2 - Spannung Zelle 1
3 - Spannung Zelle 1+2
4 - Spannung Zelle 1+2+3
5 - u.s.w.....


Könnte man nicht Pin z.B. 3 über einen sehr hohen Widerstand auf Masse legen
und dann dahinter z.B. zwischen Pin 3 und Pin 4 die Differenz messen?
Mit meinem Mulitmeter kann ich ja auch zwischen den Pins messen! ?
oder irre ich?




Somit sollte der Sender jede Zelle bis 5,12V anzeigen können!
Der Andurio hat doch Analogeingänge mit 12 Bit , bei welcher Spannung am Eingang gibt er 4096 ( 12Bit ) aus ? [...]
Mich würde eher ein Sensor für die Gesamtakkuspannung interessieren. [...]


Mit meinem GAM fliege ich auch immer nur mit Einzelzellspannung (erste Zelle),
das ist sehr aussagekräftig. Bei 4,1 Volt geh ich fliegen und bei 3,4 Volt wird gelandet:D

Man könnte doch auch "Spannungsteiler" z.B. 1:6 nutzen?
Oder?? dann nur noch das Byte herausfinden, mit dem Graupner die
Gesamtspannung kodiert? mit rund 5 Volt am Analoginput gingen
Akkugesamtspannungen bis 30 Volt.

Weiß jemand, wie man so einen Spannungsteiler auslegt?:confused:
Widerstände? Wie groß? Wo die Spannung zum Analog-Input abgreifen?
Kenn mich leider (noch) nicht aus :cry:

Die AD-Wandlung schaff ich dann wieder alleine :D

ingo_s
15.08.2011, 20:44
Hi,

Du musst von der ADC Referenzspannung ausgehend einen Spannungsteiler berechnen mit dem du die maximal anliegende Spannung noch auflösen kannst. Bei mir 3.3V URef bis 4 Zellen gibt 47k zu 11k. Das ganze 4mal für jeden Pin und dann in der Weichware aus der Differenz die einzelne Zellenspannung berechnen. Den GND Pin sollte man 200 bis 300mV vorspannen um auch den Spannungsabfall auf den Zuleitungen (Lipo-Minus -> Regler -> Empfänger) mit berücksichtigen zu können. Die Störimpulse an den Spannungsteilern müssen per Ko. oder per Software gefiltert wrden.

Gruß Ingo

flying-doctor
15.08.2011, 21:50
>>Bei mir 3.3V URef bis 4 Zellen gibt 47k zu 11k. Das ganze 4mal für jeden Pin und dann in >>der Weichware aus der Differenz die einzelne Zellenspannung berechnen.

Das wird hinhauen. Hab gerade solche Schaltungen gegoogelt.
Deine Anhaltspunkte für Widerstände helfen mir sehr, um das nachzuvollziehen!
Danke.

>>Den GND Pin sollte man 200 bis 300 mV vorspannen um auch den Spannungsabfall
>> auf den Zuleitungen (Lipo-Minus -> Regler -> Empfänger) mit berücksichtigen zu
>>können. Die Störimpulse an den Spannungsteilern müssen per Ko. oder per Software >>gefiltert wrden.

Ok, Danke! das muss ich dann wohl mit einem E-Techniker vor Ort basteln:
Also GND auf 0.3 Volt und kleine Kondesatoren, damit Störimpulse
Spannungsteilern nicht zu vielen Schwankungen führen, oder eine Art von
gleitendem Durchschnitt als Filter.

Eilt ja nicht, wenn wieder Tage, wo man nicht fliegen kann,
werd ich das schon lernen.

Elektro-Andi
15.08.2011, 22:38
Man könnte doch auch "Spannungsteiler" z.B. 1:6 nutzen?
Oder?? dann nur noch das Byte herausfinden, mit dem Graupner die
Gesamtspannung kodiert? mit rund 5 Volt am Analoginput gingen
Akkugesamtspannungen bis 30 Volt.


Hallo,
habe mir den Atmega mal angeschaut: Analogeingänge mit 10 Bit aufgelöst. Eine Interne Referenzspannung mit 1,1V könnte man verwenden.

Für bis zu 4 Zellen sollte der Spannungsteiler bei den 1,1V am Eingang auf 20V am Akku ausgelegt werden.
Also:
ADC Eingang gegen - (Masse) = 10K
ADC Eingang gegen Akku + = 189K ( Einen änlichen nehmen und softwareseitig eichen )
Metallfilmwiederstände 1% Toleranz.
Grüße
Andi

Elektro-Andi
16.08.2011, 10:26
Hallo,
bevor es einer merkt: Widerstand schreibt man natürlich ohne ie !
Andi

Ringelpiez
16.08.2011, 11:09
bevor es einer merkt: Widerstand schreibt man natürlich ohne ie !


Das kommt aber immer auf den Wi(e)derstand an! :) :) :)





Dirk

flying-doctor
17.08.2011, 00:13
Momentan habe ich viele Anregungen und konkrete Hilfen gekriegt,
damit lässt sich was auf die Beine stellen.
Heute nachmittag haben mich zwei Fliegerkollegen (E-Techniker)
gut beraten, einer hat gerade für Jeti Sensoren gebaut.
Nun muss ich einfach systematisch tüfteln

Dazu hab ich mir mal einen Projektplan gemacht.
Dann gibt's bis zur Saison 2012 nämlich brauchbare Ergebnisse.
Werde euch dann ab und zu auf dem Laufenden halten :D


August/September: Forschung ;-)
Reverse-Engineering des Protokolls zwischen einem Sensor und Empfänger
alle vom GAM gemessenen Spannungen, Höhe bzw. Steig- und Sinkrate
Erzeugen einer korrekten Gültigkeitsprüfung, Checksumme?, CRC?


Oktober/November: Software
Erzeugen protokollkonformer Datenserien mit C für Arduino.
Evtl. Bereitstellen einer Art von Abstraktionsschicht,
damit auch übliche UAV oder FPV/OSD-Geräte darauf zugreifen können
(Interface), Dokumentation


November/Dezember: Hardware
Spannungsmessung bis 30 Volt und bis 4 Zellen
Verkleinern, Gewichtsoptimierung;
Test mit verchiedener Hardware: Chip only ;-)
(also kein Arduino mini oder nano, sondern ganz wenig...
ausführliche Tests am Boden

Januar/Februar (Betatest)
Test im Flugzeug
Prüfung und Optimieren
Abgabe des fertigen Sensors an interessierte Mitflieger
und Forumskollegen


LG Stefan

Ralf Horstmann
17.08.2011, 00:45
Abgabe des fertigen Sensors an interessierte Mitflieger
und Forumskollegen
Dir ist aber schon klar, dass Du damit dann den gewerblichen Rahmen betrittst ?
Das solltest Du Dir vorher überlegen, auch aus steuerlichen Gründen.

dvcam99
17.08.2011, 18:00
Hi flying doctor,

bitte auch auf die WEEE Richtline achten. Das führt schnell zu Problemen wenn man die elektronischen Artikel nicht registriert. Ich habe damit beruflich zu tun.

Ein Kollege von mir musste da schon eine schmerzliche Erfahrung machen.

Bitte nicht falsch verstehen!! Ich möchte auch nicht schulmeistern. Einfach ein Auge drauf haben.

VG

db

DD8ED
17.08.2011, 18:36
Hallo,

ohne jetzt genauer in die Abgründe der Datenblätter abgestiegen zu sein....
Es gibt ATmega16/32 HVB. Diese sind auf Akkumanagement spezialisiert. Da könnten einige Funktionen integriert sein, die nützlich sein könnten.
Nur mal als Tip.
Just my 2 cents

flying-doctor
17.08.2011, 22:53
Danke für die Stichworte "gewerblich" und "genehmigt"
Ich will und werde keine Sensoren verkaufen, sondern nur Software und How-To's
veröffentlichen. Für mich ist das nur ein Schlechtwetter-Hobby.

Mit Richtlinien kann ich gut verstehen. Da wir hier in Berlin aber sowieso
(unter Duldung der Behörden) ganz wilden Wildflug betreiben,
ist das das geringste Problem :cool:



______________________________________


Übrigens kann der Arduino seit heute Abend ein paar Brocken "Hott" sprechen :D
Spannungs- und Höheninformationen werden mit 19200 Baud übertragen.
Interessanterweise musste ich zwischen zwei Bytes noch 2 ms Extradelay
einbauen :)

Statt eines korrekt berechneten CRC-Bytes habe ich erstmal mit experimentell ermittelten
Prüfbytes gearbeitet. Ich überlege mir echt, ob ich in das reverse-engineering des Prüfsummenalgorithmus noch weitere Arbeit inverstiere.... (hab gestern am späten Abend
3 Stunden alle möglichen Polynome, Initialwerte, XOR, Vorwärts- und Rückwärts, Bit-Umkehrungen per Software durchtesten lassen.... ) *gähn*

Für den 8; Bit großen Zahlenraum der denkbaren Spannungswerte
kann man eben mal schnell alle zulässigen Werte durchprobieren und dann als
Konstanten in Form einer Nachschlage-Tabelle ablegen.
Das geht schneller, spart Speicher und Akku ;)

Elektro-Andi
17.08.2011, 23:49
Hallo flying-doctor,
Mini-Spannungssensoren sind toll.
Ein Höhensensor (Vario) wäre aber eine direkte Alternative zum Graupner Vario, möchtest du das?

Grüße
Andi

Ulrich Horn
18.08.2011, 03:29
Leute, hier geht es um nicht mehr als um die mit reverse-Engineering gewonnen Informationen über ein Protokoll. 'flying-doctor' zeigt, dass man dafür nicht viel mehr als einen simplen Logic-Analyzer braucht.

Gewerblich ist das nicht verwendbar, denn das zugrundeliegende Protokoll ist nicht in Stein gemeißelt. Würde jemand ein Produkt auf dieser Basis entwickeln und verkaufen, bekommt er ein ernstes Problem, wenn Graupner das Protokoll ändert. Und das können sie jederzeit, denn sie sind Herr des Verfahrens.

Deswegen hat das hier reinen Hobby-Charakter. Wer mag, kann sich darauf einlassen, basteln und lernen, und etwas bauen, was nicht angeboten wird. Es eignet sich jedoch nicht dazu, marktfähige Alternativen zu Graupner-Produkten zu entwickeln ;)

Grüße, Ulrich

Ringelpiez
18.08.2011, 08:40
Hallo Flying-doctor,
ich finde Deine Idee mit den HoTT-Sensoren ja ehrlich klasse! Zumal es dir ja offensichtlich nicht darum geht, Graupner konkurenz zu machen, sondern nur etwas zu entwickeln, was es sonst noch nicht gibt.
Aber Graupner will ja vermutlich auch nicht alles abdecken und gibt daher die Daten frei.


Wenn man die Daten anfordert, dann bekommt man diese auch.

Ich verstehe daher absolut nicht, warum Du dir so eine Arbeit mit dem ´Reverse-Engineering´ machst. Frag doch einfach mal bei Graupner an!!



Dirk

Ralf Horstmann
18.08.2011, 10:31
@Ulrich
In dem Moment wo er das hier umsetzt:
"Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen"
ist er gewerblich, denn er wird den Sensor wohl kaum verschenken ( selbst das kann als Gewerbe gelten).
Es ist sogar schon ein Gewerbe, wenn man z.B. bei HobbyKing für die Vereinskameraden eine Sammelbestellung aufgibt - mit allen damit verbundenen Pflichten, die ein gewerblicher Importeur so zu erfüllen hat ( WEEE, Gewährleistung, Produkthaftung, etc. ).

@Dirk
So darf er alles veröffentlichen was er heraus findet, während er bei Graupner ein Non-Disclosure Agreement unterschreiben muss und keine Einzelheiten zu seiner Entwicklung veröffentlichen kann.

Aber witzig dass es jetzt für andere Systeme losgeht - fast 3 Jahre ! nachdem findige Leute das Jeti Protokoll ausgemessen haben. :D

Gregor Toedte
18.08.2011, 11:05
...ist er gewerblich, denn er wird den Sensor wohl kaum verschenken ....

mir ist das Ziel deiner Sticheleien nicht ganz klar und ich bitte um Erklärung per pn. Danke.

flying-doctor
18.08.2011, 12:34
wollte meine Mittagspause eigentlich anderes verwenden....


Aber aus gegebenem Anlass an die Bedenkenträger:


I. Also erstmal zum gewerblichen Interesse:

ich habe NICHT vor, irgendetwas zu verkaufen!
Als Arzt bin ich beruflich voll ausgelastet und finanziell zufrieden.
Aber ich verbringe gerne meine Freizeit mit Klavierspielen,
Lesen, Programmieren und Modellflugzeugbau...

Weder habe ich ein Interesse daran, einen Shop zu eröffnen,
noch mich mit irgendwelchen Elektroschrott-Rücknahmen
oder Abmahnverfahren auseinander zu setzen...
Besonders möchte ich hervorheben, dass ich
der Fa. Graupner nicht schade.

Mit dem Entwickeln von interessanten Anwendungen verfolge
ich keine finanziellen Interessen, sondern halte mein Gehirn fit.
Andere Leute spielen Sudoko oder sowas :p


II. Reverse Engineering
Warum ich lieber eine Schnittstelle analysiere, anstatt sie
in einer Spezifikation nachzulesen, kann ich nicht sicher sagen.
Vielleicht liegen die Ursachen in meiner Sozialisation.


Es gibt jedoch einen rechtlichen Unterschied zwischen

1. der Nutzung eines von mir angeschafften Elektrogeräts (HoTT-Empfänger/Sender)
im Zusammenspiel mit einem quelloffenen Mikroprozessor (Arduino ist Open Source),
wenn ich ein Protokoll selbst analysiert habe.

gegenüber

2 der Nutzung einer von der Firma Graupner bereitgestellten Spezifikation,
die sehr wohl schützenswürdig ist! Auch daraus abgeleitete Software würde
automatisch geschützt.


Rein praktisch dürfte ich meinen Quellcode nicht an dritte weitergeben, da die darin umgesetzte Spezifikation nur in eine andere "Repräsentation" darstellt. Anders gesagt: Ein einfaches serielles Protokoll genießt keinen Schutz, da es im Jahr 2010 keine entsprechende "Schöpfungshöhe" aufweist! Es darf analysiert und genutzt werden.
Zu Zeiten als serielle Protokolle noch neu waren, war das anders!
RS-232 und I2C waren - glaube ich - sogar patentiert.

Schade... Pause ist zuende..

Ralf Horstmann
18.08.2011, 13:07
@Gregor
Das ist ein Kommentar auf Ulrichs Beitrag, der auf eigenen Erfahrungen aus der Entwicklung eines internen Jeti Displays für die MC-24 (http://www.rc-network.de/forum/showthread.php/189561-MC-24-JetiBox-Entwicklung?highlight=MC-24+Jeti+Display) beruht. Er plant ja die "Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen", alleine auf RCN gibt es >30.000 "Forumskollegen" zzgl. stiller Mitleser ...

Ulrichs Beitrag bagatellisiert übrigens Verstöße gegen das ElektroG (http://bundesrecht.juris.de/elektrog/) ( Umsetzung der Richtlinien 2002/95/EG (RoHS) (http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2003:037:0019:0023:DE:PDF) und 2002/96/EG (WEEE) (http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2003:037:0024:0038:DE:PDF) ) und fällt damit eigentlich unter FR 1.3 . Damit Du das nachvollziehen kannst, habe ich Dir oben ein paar relevante Links eingefügt. Die sind übrigens für jeden interessant, der so ein Projekt umsetzen möchte und das Projekt mit der Aussage "Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen" beginnt.

Da das Wissen um den rechtlichen Rahmen Einfluß auf die Entwicklung hat, z.B.
- SMD Bauteile (schlecht von Laien zu löten) vs. DIP Bauteile (einfach zu löten)
- eigene Hardware (Herstellung?) vs. fertige Hardware (Arduino - aber gibt's ein passendes Board?)
- Fertiggerät ( müssen wegen der Entsorgung angemeldet werden ) vs Bausatz ( muss ggfs. nicht angemeldet werden )
sollte man sich frühzeitig informieren.

Das meiste kann man allerdings weitgehend ignorieren, wenn man nur für sich selbst entwickelt - aber die Absicht den Sensor weiter zu geben hat er ja inkl. einem Zeitplan der Entwicklungsstufen hier schon veröffentlicht und damit gelten eben andere Rahmenbedingungen als für eine private Bastelei.


ich habe NICHT vor, irgendetwas zu verkaufen!
Dann darfst Du das aber auch nicht ankündigen. Warte mal ab, wenn die Dinger funktionieren und Dir die Leute die Bude einrennen weil sie entweder Geld sparen wollen oder Graupner nichts vergleichbares hat.
Mein Jeti Display habe ich ursprünglich auch nur für mich entwickelt - ich hab es auch nicht nötig, aus dem Hobby Kapital zu schlagen. Aber "Gefälligkeiten" in dem Bereich können schnell sehr teuer werden, wenn Du es nicht richtig angehst. Mal eben "abgeben" geht eben nicht.

Und jetzt weiter zum Protokoll :D

flying-doctor
28.08.2011, 19:25
[Tippfehler: Imoplementierung --> Implementierung ]

Ich freue mich, euch mitteilen zu können, dass der erste "Eigenbausensor"
in der Software-Version 0.092 gerade fertig ist.

Das vollständige Messageprotokoll zur Verbindung mit einem GR-16 Empfänger
ist implementiert und liefert für alle möglichen Telemetrie-Funktionen und Alarme
die korrekten Werte;
hoffentlich ;)

Der Code und das einfach Konzepte kann als Basis für eigene Sensoren verwendet
werden und auch als generische Schnittstelle z.B. für Flyduino oder Ardupilot u.a.
Wer Code und Dokumentation haben möchte, kann mich anschreiben
und mir seine Email mitteilen. Die Benutzung erlaube ich nur zu nicht
kommerziellen Zwecken! (später vielleicht mal GLPL) Ob ich den Code tatsächlich
frei geben kann, muss ich noch rechtlich prüfen.


viele Grüße.
S.

flying-doctor
29.08.2011, 23:26
Die Software Version 094 ist verfügbar.

https://docs.google.com/document/d/1eUdOwxmL-dTzQMPYpY1-SOJGABIoKwSTcIz8Az5PyXs/edit?hl=de

Nur mal ein Zwischenstand! wird alles noch viel kleiner und smarter :)
694121

694119

694120

Ritschi
30.08.2011, 09:31
Für den Anfang sieht das doch gar nicht mal schlecht aus. :)

Du schreibst aber:

Spannung über dem Analogeingan maximal 4 Volt
Die Arduino-Spezifikation erlaubt max. 50 mA.
50mA Wo? Am Analogeingang oder an den Ausgängen. Wenn das auf den Analogeingang bezogen ist, so wirkt sich das aber nicht direkt auf die Wahl der Widerstände aus.
Du hast das so verstanden, dass der Strom, welcher durch deine Messwiderstände fliesst max 50mA sein darf. Damit hat das aber eigentlich nichts zu tun.
Wenn die Spannung am Analogeingang 4V überschreitet, wird versucht diese über interne Klemmdioden wieder nach unten zu ziehen. Mit den 50mA ist der maximale Strom gemeint, welche dann da hinenfließen kann ohne, dass der Controller beschädigt wird.
Ist das helbwegs verständlich geschrieben? :D

Zum Schutz des Analogeingangs würde ich außen noch 2 Klemmdionden gegen GND und deinen Stabilisierten 4V Vcc einbauen.

Welchen Spannungsregler verwendest du eigentlich?

PS.: Wenn du die Spannung softwaremäßig nicht nur einmal misst sondern öfters und dann Mittelwert oder so ausgiebst kannst du weitestgehend verhindern, dass die Anzeige zwischen Werten "herumspringt". Diese Sprünge könnten durch die Impulsförmige Stromaufnahme eines BL Reglers oder dergleichen hervorgerufen werden. Zeit zum mehrmals messen hast du ja. Dann lagweilt sich dein Microcontroller nicht zu Tode. :D

MfG
Ritschi

flying-doctor
30.08.2011, 09:58
Das klingt sehr interessant!
Mit Deinen anderen Bauteilen bitte ich um mehr Erklärung!! Daaaanke!!
(Bin kein E-Techniker)

Als Spannung habe ich zum Testen mit dem großen Testboard (Freeduino)
3-Zellen Spannung aus einem Lipopack genommen. Jedes Board hat eine
eigene Spannungsstabilisierung. Also ganz einfach, oder?
Habe ich was übersehen?:rolleyes:

Für die kleine Platine (Arduini pro mini) wollte ich die knapp 5 Volt aus
dem Empfänger nehmen. Das sollte doch reichen, oder?
So soll das in ein paar Tagen aussehen: :D
694233


LG Stefan

flying-doctor
30.08.2011, 10:09
Für den Anfang sieht das doch gar nicht mal schlecht aus. :)
Du schreibst aber:
50mA Wo?
i
An allen Inputs (gesamt)
Den Spannungsteiler habe ich so bemessen, dass nur ca. 1 mA fließt.
wir wollen ja nur messen und nicht "braten":)



Zum Schutz des Analogeingangs würde ich außen noch 2 Klemmdioden
gegen GND und deinen Stabilisierten 4V Vcc einbauen.

wie genau?



PS.: Wenn du die Spannung softwaremäßig nicht nur einmal misst sondern öfters und dann Mittelwert oder so ausgiebst kannst du weitestgehend verhindern, dass die Anzeige zwischen Werten "herumspringt".

möchte ich mit gleitenden Mittelwerten lösen.

st_canoe
30.08.2011, 11:06
Hallo Stefan,

vielen Dank für Deine Arbeit, die Du in das Projekt steckst! Ich hab mir mal den Code angesehen und bin echt begeistert wie gut Du alles dokumentierst.

Leider hast Du in der Schaltung der Spannungsmessung einige falsche Annahmen gemacht, und bei der Berechnung der ausgegebenen Spannung falsch gerechnet. Hier die entsprechende Textstelle:




Dies ist experimentell, aber funktioniert recht ordentlich.
Am Analogeingang 4 wird eine einfacher hochohmiger Spannungsteiler aus zwei
(Metallschicht)widerständen realisiert. Die Widerstände werden passend zum Spannungsbereich gewählt, der gemessen werden sollen 0.1 - 53.5 Volt)

Spannung über dem Teiler z.B. 12.6 Volt (= 3 Lipozellen)
Spannung über dem Analogeingan maximal 4 Volt
Die Arduino-Spezifikation erlaubt max. 50 mA.
Wir wählen einen maximalen Stom von 1 mA (sicher ist sicher...)

Berechnung mit Hilfe von http://www.shosworld.de/Elektronik/spannungsteiler.html

1. Widerstand 8.2 kOhm
2. Widerstand 3.9 kOhm
=> Spannung am Analogeingang des Arduino max. 4.061 V Volt bei max. ca. 1.04 mA.

Ich arbeite momentan aber mit 10 kOhm und 500 Ohm, was perfekt klappt.
(Messwert einmalig per Software geeicht)

<snip>

// die wahre Spannung meines Testlipos war 12.0 V, arduino misst “126”,
//also muss ich ganz simpel 6 abziehen. Diese manuelle Kalibrierug
//wegen der ungenauen Widerstände soll zukünftig automatisch passieren.
//dazu möchte ich die interne Referenzspanniung (1100 mV oder 4960 mV?)
//nutzen. Muss da mal tüfteln.


Deine erste falsche Annahme ist, das der Arduino bis 4 Volt misst. Er misst aber immer bis 1 Bit unter die Spannung an AVCC , die hier mit der Betriebsspannung verbunden ist oder die interne Referenzspannung von 1,1V. Das müsste man aber mit einem Register einschalten.
Somit kann man von 0-5V messen mit 10 Bit (1024 Stufen) Auflösung. Daraus folgt, das die kleinste zu messende Spannung (und jede Stufe) 4,88mV beträgt.

Weiterhin nimmst Du an das in den Eingang des ATMEGA Strom fließt. Das stimmt im Prinzip schon, es sind aber eher 50nA als 50mA ! Er ist laut Spezifikation für eine Impedanz von 10kOhm oder weniger ausgelegt. Das hat aber keinen Einfluss auf die Genauigkeit, sondern nur auf die Messgeschwindigkeit. Somit sollte der Spannungsteiler so niedrohmig wie möglich gewählt werden, ohne zu viel Strom aus der Batterie fließen zu lassen. Da warst Du mit Deinem 1mA schon im richtigen Bereich.

Um jetzt von 0 bis 20V zu messen (dem vernünftigen Spannungsbereich für einen 3 Zellen Lipo) muss der Spannungsteiler 3:1 ausgelegt werden. z.B. 1kOhm vom Messpin nach Masse und 3x1kOhm zum Akku. Dann fließt bei 20V ein Strom von 5mA durch den Spannungsteiler und entläd den Akku. Das sollte zu verschmerzen sein. Die 20V kann der Controller dann mit 1024 Schritten zu 19,52 mV messen. Den zu sendenden Messwert errechnest Du über ADC*0,01953 Dieser Wert errechnet sich aus 20V/1024 oder 20V/10Bit. Bei anderen Spannungsbereichen musst Du den Spannugsteiler und die Rechnung anpassen. Bei 10V ist der Teiler 1:1 und bei 40V 7:1.

Auch wenn sich einige Fehler eingeschlichen haben finde ich die Entwicklung klasse und werde sie weiter verfolgen! Wenn ich mich getäuscht haben sollte, bitte nicht zu fest hauen :)

Grüße, steve

gecko_749
30.08.2011, 11:11
Moin,

ich zitiere Dich mal.


...

Der Empfänger sendet alle 200 ms einen Request.
Und der Sensor antwortet mit einer Gruppe von 36 Bytes,
wenn ich mich nicht verzählt hab. Offenbar unterscheidet
sich die Antwort nur in den Datenbits....

Danach bin ich der Ansicht das Du auch ein Signal am RX-Pin haben mußt um zu wissen wann der RX Daten haben möchte.

Gruß

gecko

flying-doctor
30.08.2011, 11:38
Hallo Stefan,
Um jetzt von 0 bis 20V zu messen (dem vernünftigen Spannungsbereich für einen 3 Zellen Lipo) muss der Spannungsteiler 3:1 ausgelegt werden. z.B. 1kOhm vom Messpin nach Masse und 3x1kOhm zum Akku. Dann fließt bei 20V ein Strom von 5mA durch den Spannungsteiler und entläd den Akku. Das sollte zu verschmerzen sein.
Grüße, steve


Daanke!
Muss mal zu Conrad und mir diese Widerstände kaufen:)
Habe bisher nur mit alten ausgelöteten aus einem alten Plattenspieler gewerkelt:D

flying-doctor
30.08.2011, 11:41
Moin,
Danach bin ich der Ansicht das Du auch ein Signal am RX-Pin haben mußt.


Ja, das wäre dann eine komplette Protokollsequenz.
Der Code funktioniert aber wunderbar!

Offenbar verarbeitet der Empfänger zuerst die Antwort,
bevor er einen neuen Request.
Es klappt und daher würde ich jetzt ungerne mit Interrupts arbeiten.
Außerdem ist der aktuelle Code rechtlich einwandfreier (nur "antworten")

:cool:

Ritschi
30.08.2011, 12:15
So wie steve habe ich das auch gemeint. In den Eingang fließt nahezu kein Strom. Erst bei Überspannung am Analogeingang beginnt ein Strom zu fließen. Um nun den Eingang im Fall eines Fehlers zu schützen würde ich eben auch noch zu den Klemmdioden raten.

Was hast du nun genau für eine Referenzspannung?
An AVcc mit betriebsspannung verbunden ist, dann sollte diese aber konstant und bekannt sein.

So meinte ich das mit den Klemmdioden:
Anstatt dem BAT54S kann man auch 2 "normale" Schottky Dioden oder dergleichen nehmen.
694270

Ich finde das Projekt toll. Weitermachen... :)

Wegen dem Protokoll kannst du zur Sicherheit auch mal ne Mail an Graupner senden...

flying-doctor
30.08.2011, 12:44
Um nun den Eingang im Fall eines Fehlers zu schützen
würde ich eben auch noch zu den Klemmdioden raten.

Vielen Dank für die echt hilfreiche Zeichnung!
Mit den Dioden verstehe ich jetzt.
Das ist so wenig Mehraufwand,
dass man das einbauen sollte.



Was hast du nun genau für eine Referenzspannung?

Die vom Prozessor gemeldete Referenzspannung ist 4960 mV



Ich finde das Projekt toll. Weitermachen... :)

Danke! schön, dass Ihr mitmacht!



Wegen dem Protokoll kannst du zur Sicherheit auch mal ne Mail an Graupner senden...

Formell mache ich nur eine Zweckentfremdung des GR-16-Empfängers,
indem ich sinnvolle Signale einspeise Es macht mir Sorgen, wenn ich mich offiziell an Graupner wende.
Die Firma finde ich toll! Die Produkte sind spitze, nur möchte ich keine non-disclosure-Situation.
Bin doch nur ein einfacher Bastler, der gerne mal experimentiert.

Habe mir die urheberrechtliche Lage angeschaut:
es handelt sich NICHT um "disassembling" von Code, was vom Hersteller sogar geduldet
werden müsste [Jedoch nur, wenn er KEINE Spezifikation liefern würde (was Graupner ja macht)]
Sondern es handelt sich um eine Zweckentfremdung von Hardware, die ich erworben habe.
Man darf einen GR-16 und einen GAM ja auch als Briefbeschwerer verwenden (Eigentum)
Mehr nicht, damit ist es rechtlich absolut unbedenklich!

st_canoe
30.08.2011, 15:48
Die Schutzschaltung von Ritschi hilft auf jeden Fall sehr gut gehen alle Arten von Überspannung, insbesondere Statische Aufladungen beim Handeln.

Beim Spannungsteiler kannst Du in Grenzen (1k-10k) die Einzelwerte relativ frei wählen, hauptsache sie sind aus einer Charge (nebeneinander im Gurt) dann hast Du mit der Genauigkeit keinerlei Probleme, da die Werte untereinander kaum abweichen.

Und nicht vergessen die Spannungsberechnung neu zu machen. So funktioniert zeigt sie nur 12V korrekt an. Alle anderen Werte sind durch das "-6" daneben (24V <> 24,6 ; 6V <> 5,7) Aber das ist ja gleich gemacht :)

Außerdem sehe ich Deine Arbeiten eher positiv für Graupner. Bastler kaufen schließlich auch Sender und Empfänger ...

Grüße, steve

flying-doctor
30.08.2011, 19:49
hauptsache sie sind aus einer Charge (nebeneinander im Gurt) dann hast Du mit der Genauigkeit keinerlei Probleme, da die Werte untereinander kaum abweichen.
[....]
Außerdem sehe ich Deine Arbeiten eher positiv für Graupner. Bastler kaufen schließlich auch Sender und Empfänger ...
Grüße, steve

Ja, Steve!
Mit der Charge ist bestimmt rauch ein sehr guter Tipp!
Die Arduinos haben ja eine sehr genaue "Selbstreferenz" auf
die Referenzspannung.
Meinst Du es ist möglich, mit geringem Aufwand eine Selbstkalibrierung
zu implementieren, oder mit ein wenig Drahtbrücke/Diode/Widerstand aufzubauen?

Für Graupner sehe ich das auch so! bei uns auf dem Flugfeld mache ich
kräftig Werbung für HoTT:)

flying-doctor
30.08.2011, 19:57
Um jetzt von 0 bis 20V zu messen (dem vernünftigen Spannungsbereich für einen 3 Zellen Lipo) muss der Spannungsteiler 3:1 ausgelegt werden. z.B. 1kOhm vom Messpin nach Masse und 3x1kOhm zum Akku. Dann fließt bei 20V ein Strom von 5mA durch den Spannungsteiler und entläd den Akku. Das sollte zu verschmerzen sein. Die


Hallo Steve!
Ich nehme an, dass die 3x1 kOhm parallel zum Pin geführt werden, oder?:confused:
Oder meinst Du 3kOhm, also 3x1 Ohm seriell?
Wahrscheinlich eine dumme Frage, aber ich bin ja E-Technik Laie....
:)

st_canoe
30.08.2011, 21:18
Hallo,

ich hab Dir mal ein Bild gemalt:

694510

Die vier gleichen Widerstände teilen die Spannung in vier gleiche Teile zu je 5V auf. Die oberen drei übernehmen 3x5=15V, der untere die gewünschten 5V. Wie Du siehst ist es ( in den oben genannten Grenzen) egal welche Werte die Widerstände haben, wenn sie nur gleich sind passt es so.

Grüße, steve

SUPER-HORNET
31.08.2011, 01:15
Die vier gleichen Widerstände teilen die Spannung in vier gleiche Teile zu je 5V auf. Die oberen drei übernehmen 3x5=15V, der untere die gewünschten 5V. Wie Du siehst ist es ( in den oben genannten Grenzen) egal welche Werte die Widerstände haben, wenn sie nur gleich sind passt es so.

Grüße, steve

Hallo Steve,

stimmt laut Gesetz des Herrn Ohm .... aber um eine exakte Messung zu erhalten sollte auf den Widerständen nicht nur der gleich Wert stehen, sondern die Widerstände sollten auch eine geringe Toleranz haben, d.h. Widerstansklasse besser 1%, notfalls Widerstände ausmessen. Zudem sollte der Widerstandswert so gewählt werden, dass der Eingangswiderstand zwischen Arduino und GND sehr gross gegenüber dem parallel geschalteten Widerstand ist, sodass dessen effektiver Wert im Spannungsteiler möglichst nicht beeinflusst wird.

Gruss,
Richard

st_canoe
31.08.2011, 07:30
Hallo,

der Eingang des Arduino hat einen Eingangswiderstand von 100MOhm. Da sind 1k oder 10k niederohmig genug. Wenn Widerstände aus einem Gurt oder aus einer Lieferung sind sind die Unterschiede untereinander erfahrungsgemäß weit besser als 1%. Für Stefan ist es so jedenfalls am einfachsten einen genauen Spannungsteiler aufzubauen. Und verstehen wie so ein Ding funktioniert tut man obendrein.

Grüße, steve

flying-doctor
31.08.2011, 21:00
Ritschis Schaltplan:
694270


Hallo Forum! Hi Ritschi, Steve & Co!

Mini-Arduinos sind bestellt, kommen Freitag.
Dann wird der erste richtige Prototyp ruckzuck fertig!

In der Mittagspause war ich kurz bei Conrad und
wollte die Bauteile kaufen...
15 kOhm? "Haben wir nicht!" BAT54S? "Hatten wir noch nie!"
5 kOhm? "Gibt's nicht!" :rolleyes:

Na gut, dann geben Sie mal:
Zwei mit 18 kOhm, 5.6 kOhm (0.1%-Toleranz),
+ zwei normale Schottky-Dioden (30 V, 250 mA...)
+ eine kleine Lochraster-Platine!
Kostete ca. alles zusammen ca. 3 €

Die Platine passt genau zum Arduino.
Der ist eh nur ein paar Millimeter hoch,
so dass die kleine Vorschaltung unten
drunter gebaut werden kann.
Schrumpfschlauch und fertig!

Das Ergebnis seht Ihr hier:
Meine erste Lötarbeit mit einer Platine!! :D
linke Bildseite rot = VCC, gelb = AnalogIn, schwarz = GND
rechte Bildseite rot = Akku+, schwarz = Akku-

694798
694797

Test: Akku mit 11.52 Volt angeschlossen
gemessen: 2.68 Volt (VCC gegen GND)
gemessen: 2.68 Volt (AnalogIn gegen GND)

Also eine Teilung 1 zu 4.29 ---> wird gleich in der Software berücksichtigt.

Fragen:
Darf ich wirklich die drei Kabel der linken Bildhälfte
an den Arduino anschließen? (er kriegt doch schon Spannung vom GR-16 Empfänger)
Oder ist die VCC-Verbindung nur nötig, wenn man den Arduino damit versorgt?

Ritschi
01.09.2011, 10:00
Fragen:
Darf ich wirklich die drei Kabel der linken Bildhälfte
an den Arduino anschließen? (er kriegt doch schon Spannung vom GR-16 Empfänger)
Oder ist die VCC-Verbindung nur nötig, wenn man den Arduino damit versorgt?

...Vielleicht...
Wenn bei deinem ersten Bild Kabel links oben (rot) nur zur Diode geht und sonst nirgends hin, dann gehört das Kabel auf deine stabilisierten 4 oder 5V. Das ist doch nur der Überspannungsschutz.

So wie steve das meinte mit den Widerständen aus der gleichen Charge hast du das aber jetzt nicht gemacht.
(Anhang 694510 (http://www.rc-network.de/forum/attachment.php?attachmentid=694510) )
Dafür hättest du dir statt dem mit 18k 3 mit 5,6kOhm kaufen müssen. Ist aber jetzt nicht so schlimm. ;)

Viel Erfolg beim Testen.

MfG
Ritschi

flying-doctor
02.09.2011, 10:44
Da liegt er nun und kann messen :D
Hübsch ist er noch nicht, aber das kommt noch.

Der kleine Sensor läuft wunderbar mit der regulierten Versorgungsspannung
aus dem GR-16. Die Übertragung zum MX-16 klappt perfekt.
Keine Änderungen an den Delays nötig.

Interessanterweise liefern meine beiden Arduini Mini Pro an den Analogpins
nur korrekte Werte, wenn ich gegen der echten Masse GROUND messe,
statt (Common) GND.... Aber das muss wohl so sein, also umlöten...

Firmware und Doku habe ich noch nicht auf dem aktuellsten Stand (Version 112)
Kommt noch!

Gruß,
Stefan

695225695227695232695233

Ritschi
02.09.2011, 13:04
Das wird ja immer besser...
Weiter so. :)

flying-doctor
02.09.2011, 20:09
Der Sensor mit allen Steckern und sinnvollen Kabellängen wiegt 6.3 Gramm.
Der Anschluss an den Akku ist als Pin-Stecker für den Balancer ausgeführt.
Einfach rot (+) an rot... Masse ist auch belegt, aber eigentlich unnütz.
Da ich die Vorschaltung nun ans Kabel gelötet und separat verschrumpft habe,
entfällt die kleine Platine und es gibt kein Kurzschlussrisiko mehr.

Der Sensor ist eingeschrumpft und macht einen recht robusten Eindruck.

Momentan ist er schon im Multiplex Merlin an einem GR-12 eingebaut.
Querruder sind jetzt an einem Y-Kabel, damit der Sensor an Kanal 5 ging.
Geht auch, nur ohne Querruder-Differenzierung

Der Sensor ist schlanker geworden:
695368
robuster:
695369
hier die Rückseite mit den Pins...
695370
Und eingebaut im Merlin, Spannung ist ok:D
695371
Zum Firmware-Update braucht man keine eingelöteten Pin-Header!
Dranhalten reicht und spart Ballast:
695372
Morgen ist damit Sensoren-Jungfernflug:)

flying-doctor
02.09.2011, 20:14
die nächsten Tage werde ich fliegen und dann
Spezifikationen von Baro-Sensoren evaluieren.
Ein Minivario geht auch noch :)

Wer Ideen oder Erfahrungen hat: immer raus damit.


P.S: Firmware am Wochenende, muss nur ein bisschen Kommentare ausmisten...

AMI
02.09.2011, 23:36
Hallo Stefan,

vermutlich suchst Du das:
http://macherzin.net/article31-Arduino-Sensoren-Luftdruck

Ein BMP085-Sensor kostet bei Watterott 7,74€ (http://www.watterott.com/index.php?page=product&info=1552).
Die Genauigkeit soll bei 0,03hPa (0,25m) liegen (http://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf).

Ich hoffe das hilft Dir weiter.

LG,
Andreas

flying-doctor
03.09.2011, 18:48
Hallo Stefan,
Die Genauigkeit soll bei 0,03hPa (0,25m) liegen Ich hoffe das hilft Dir weiter.
LG,
Andreas

Danke Andreas,
der Sensor geht nur für 3.x Volt und werde einen für 5 Volt finden.
Außerdem ist das nur der reine Sensor, ohne Breakout-Bauteile,
das ist so noch nicht optimal.
Aber die Richtung ist ok.
Bei Watterott.com und Lipoly.de gibt's einige Sensoren zur Auswahl.
Werde mir wegen der Vor- und Nachteile (Einbau-Aufwand, Implementationsaufwand
für das Protokoll, Genauigkeit usw.) wohl ausführlicher mit der Materie befassen.
Es gibt bei den Freunden, die die mit selbstgebauten Jeti-Sensoren fliegen bestimmt
einiges an Anregung..
Danke aber trotzdem...

S.

flying-doctor
03.09.2011, 19:03
Heute war wunderbares Thermikwetter in EDDI (Berlin, Flughafen Tempelhof)
Dort ist unser Hausplatz. VIele Flugfreunde waren da, aber kaum Telemetrie-Flieger.
Nur einer, ein Verkäufer von Conrad, hatte sich gerade eine MX-16 HoTT bestellt.

Also ideale Bedigungen, um anderen mal zu zeigen, wie gut das mit
Graupner-Telemetrie geht.:D


Testflieger waren eine MPX Easyglider pro und ein MPX Merlin.
Die Spannungsermittlung klappte gut, war allerdings dauerhaft ein Volt zu niedrig.
Ich hatte gestern schlicht und einfach mit einem bereits benutzten Akku kalibriert:p
und 11.40 statt 12.40 Volt als Bezugsgröße gewählt (peinlich, peinlich....)
Wir jetzt sofort berichtigt :D


Sonst gab es keine Störungen.
Nach einer Landung habe ich eigentlich aus Versehen die Messpins
aus dem Pinhalter (Stecker zum Balancer) gezogen. Es ging sehr leicht...
Das ist entpuppte sich dann aber als praktisch, weil man nun alle möglichen
Akkus (1-6 Zellen messen kann) :cool:
PinHeader sind offenbar gut als Balancerstecker geeignet! Auch ohne Telemetrie.


cu,
Stefan

gecko_749
03.09.2011, 21:46
Hallo,

der BMP085 ist kein so schlechter Start wenn man mit geringem Aufwand eine Druckhöhe möchte. Er findet sich auch auf so manchem kommerziellen Produkt...

Breakout gibt es bei Sparkfun - sollte also über Watterott oder Lipoly auch zu bekommen sein.

3,3 Volt habe ich auf meinem Arduino-Board als geregelte Spannung - ist aber nicht bei jedem Board so.

Gruß

gecko

AMI
03.09.2011, 22:49
Hallo Stefan,

Breakout-Board gibt es auch bei Watterott:
http://www.watterott.com/de/Breakout-Board-mit-dem-BMP085-absoluten-Drucksensor

3,3V auf 5V Konverter gibt es für unter 2$ bei Sparkfun:
http://www.sparkfun.com/products/8745

Wenn Du einen 5V Sensor findest umso besser, ich habe auf die schnelle keinen gefunden.
Es gibt recht viele Codebeispiele für den BMP085, das sollte die Sache erleichtern.

API findest Du auf:
http://www.bosch-sensortec.com/content/language1/html/3477.htm

Der Nachfolger des BMP085 ist der neue BMP180, der ist noch etwas kleiner und hochauflösender. Den findest Du auch unter dem Link für das API, oder z. B. hier:
http://www.dsscircuits.com/barometric-pressure-sensor-bmp180.html


Gruss,
Andreas

gecko_749
04.09.2011, 10:36
Moin,

beim BMP085 etc darauf acchten das er nur 3,3 Volt Logiclevel verträgt.

Also evtl. doch das3,3 VoltBoard verwenden.

Gruß

gecko

Mulder
04.09.2011, 11:14
Hallo,

das finde ich ja echt super, dass das Protokoll soweit offen ist, für mich neben der Sprachausgabe DER Grund auf das Hott System umzusteigen!!!

Habe mich mit dem Telemetrie Zeugs schonmal hinsichtlich des Jeti Systems beschäftigt, hier einige Erfahrungen:


Wenn wir schon bei Pegeln sind:

Ich habe zwar mein Hott Sytem noch nicht, kann also nicht nachmessen. Im Thread "Reden wir über die mx-20 Hott - Seite 32" schreibt allerdings jemand, dass man auf der FCC Seite die Schaltpläne der Graupner Sender/Empfänger herunterladen kann - und das habe ich gemacht.

So wie es ausschaut läuft der PIC und der CC2500 im Empfänger mit 3V oder 3,3V (Spannungsregler XC6209F30). Dementsprechend sollte natürlich das TXD Signal vom Sensor auch den entsprechenden Pegel aufweisen, glaube nicht das der uC 5V Tolarant ist!!!

Mein Vorschlag wäre ein Arduiono Board mit 3,3V Regler zu verwenden, dann kann auch der Baro Sensor ohne Probleme betrieben werden und die RX/TX Pegel passen.

Als Baro Sensoren könnten noch die MS55xx, MS56xx mit teilweise 24Bit Wandler interessant sein (Sander-elektronik um 15€)

Der BMP085 wird übrigens auch im multiwii copter projekt eingesetzt, welches auch auf der Arduino Plattform basiert.

Hier gibt es eine C-Lib für den BMP: http://www.sicklinger.com/de/atmel-avr-atmega-bmp085-library-in-c.html

Was ich noch interessant finde: Bei Hobbyking gibt es für 20$ einen Stromsensor mit Atmel uC, http://www.hobbyking.com/hobbyking/store/__11251__Quanum_2_4Ghz_Telemetry_System_Temp_Amp_add_on.html, den könnte man direkt als Hardware für die Hott Basteleien hernehmen. Siehe RC-Line Forum "Projektvorschlag: eigene Jeti-Sensoren mit dem Arduino Board"

Grüße,
Jochen

Ralf Horstmann
04.09.2011, 13:53
das finde ich ja echt super, dass das Protokoll soweit offen ist
Na, dann zeig doch mal, wie man z.B. einen Sensor programmiert, der die Endpositionen eines 3-Bein Einziehfahrwerks prüft und warnt, wenn ein Bein nicht richtig ein- oder ausgefahren wurde. Von der Hardwareseite ist das wirklich simpel, einfach Microschalter an die Pins vom Arduino, der Rest ist Software. Weil das von der Hardwareseite so einfach ist, ist das ein ideales Beispiel dafür, um zu zeigen wie einem offenen Protokoll neue Dinge beigebracht werden.

landebahnpflug
04.09.2011, 19:01
Na, dann zeig doch mal, wie man z.B. einen Sensor programmiert, der die Endpositionen eines 3-Bein Einziehfahrwerks prüft und warnt, wenn ein Bein nicht richtig ein- oder ausgefahren wurde. Von der Hardwareseite ist das wirklich simpel, einfach Microschalter an die Pins vom Arduino, der Rest ist Software. Weil das von der Hardwareseite so einfach ist, ist das ein ideales Beispiel dafür, um zu zeigen wie einem offenen Protokoll neue Dinge beigebracht werden.

naja wenn man es richtig machen will, und nicht das es so vor sich hin funktioniert,ist es doch mehr als nur mal zusammen zu löten...
Bitte auch wenn "nur" ne telemtrieanwendung ist ... wenn ihr die Versorgungsspannung kurz schliesst wirds doof ...
also bitte sorgfältig arbeiten.

Vielt doch ein Grund doch noch die alte MC22 auf Hott und keine neue multiplex zu kaufen
...
dumm ist nur das die normal MC22 nicht auf Telemetie Software updatefähig zusein scheint.
:D

flying-doctor
04.09.2011, 23:42
Hallo Gecko und Jochen,



So wie es ausschaut läuft der PIC und der CC2500 im Empfänger mit 3V oder 3,3V
[...]
Mein Vorschlag wäre ein Arduiono Board mit 3,3V Regler zu verwenden, dann kann auch der Baro Sensor ohne Probleme betrieben werden und die RX/TX Pegel passen.
[...]
Als Baro Sensoren könnten noch die MS55xx, MS56xx mit teilweise 24Bit Wandler interessant sein (Sander-elektronik um 15€)




Ihr habt Recht:

der Empfänger erwartet tatsächlich einen Logicpegel von +3 Volt.
Habe eben nachgemessen: es waren 2.95 Volt beim Request:rolleyes:
Seit einer Woche scheinen allerdings die +5 Volt des Freeduino Twentyten
bzw. Arduino mini pro mit je 16 Mhz (5 Volt-Version) gut zu funktionieren :D
Ob das Zufall ist - oder, ob der GR-16 +5 Volt verträgt (was ich glaube),
sei dahin gestellt. Auf jeden Fall war das von mir nicht ok.

Hatte beim Freeduino zuerst nicht drüber nachgedacht und habe den
5+ Arduino mini nur gewählt, damit es möglichst wenig Unterschiede zwischen
der Entwicklungsplattform und dem Prototypen gibt....

Das muss sich jetzt natürlich schleunigst ändern.
Also neue Arduino-Mini's bestellen:p

Stichwort Sensoren:
Als Sensoren für ein erstklassiges (!) Vario scheint das MS5607
sehr gut geeignet zu sein. Ohne einfaches Breakout-Board kann man jedoch
keine Empfehlung zum Nachbau/Eigenbau geben... Mit 5 Volt hätte ich MPL115A1 gewählt...
Einen SCP1000 habe ich letzten Sommer auf der Chronos-Uhr von Texas-Instruments
erlebt, als ich (vergeblich) versucht hatte, die Uhr in ein empfindliches Vario zu verwandeln.
Es gab einfach zu viel Rauschen... Und nach Filtern bzw. Glättung der Werte war's zu träge für mein Empfinden....

Es stellt sich sowieso die Frage, wie sich <10 cm Höhendifferenzen in einem Digitalvario
sinnvoll nutzen lassen. Die MX-16 bietet verschiedene, gut unterscheidbare Steig- und Sinktöne an. Glücklicherweise wird aber nicht jeder 10 cm Hupfer übertragen, sonst
wäre das zu viel Gepiepse, finde ich... Ich vermute, dass 24 Bit-Druckwandler erst
dann sinnvoll sind, wenn auch die Ausgabeseite am Boden entsprechend differenziert ist.
(Analogvario...) Natürlich könnte man auch einfach verschiedene Empfindlichkeitsstufen realisieren. Über einen Steuerkanal im Flug einstellbar (Ch 6, 7, 8...) Das würde grundsätzlich gehen, aber alleine die Dokumentation, damit das nutzbar wird, stelle ich mir problematisch vor. In den Foren liest man immer wieder, wie überfordert Fliegerkollegen von
der Technik sind;

HoTT ist genial einfach und funktional. Ich finde man sollte diesen Vorteil nicht durch kryptische Eigenentwicklungen zunichte machen, obwohl mich das reizen würde :)


Vielleicht ist der BMP085 wirklich die bessere Wahl. Er ist zwar vergleichsweise wenig hoch-auflösend, aber dafür leicht verfügbar, billig und es gibt viele nutzbare Quellen / Code-Beispiele.... Außerdem passt die Empfindlichkeit besser zur Praxis


Werde also bei Lipoly.de zwei 3-Volt-Boards als Testumgebung ordern
und eine Platine mit BMP085 von Sparkfun.

Der Sensor wird dann die Maße von 29 x 18 x 6 mm erreichen und
mit Höhenmesser und allen Kabeln vermutlich auf 11 Gramm kommen.


Weil die Sachen nicht sofort lieferbar sind, müssen wir uns in Geduld üben
und in der Zwischenzeit stattdessen mehr praktisch fliegen :cool:

gecko_749
05.09.2011, 10:04
Moin,

den Drucksensor kannst Du theoretich auch bei Lipoly bekommen http://www.lipoly.de/index.php?main_page=product_info&cPath=880_885_1826&products_id=134958

Oder halt den Nachfolger. Der SCP1000 ist abgekündigt.

Für die MS - Sensoren habe ich noch kein Breakout gesehen. Die selbst zu löten wird arg fumelig.

Gruß

gecko

st_canoe
06.09.2011, 12:35
Hallo Stefan,

ich hab mal Deine Software auf einen Arduino hier geladen und den korrekten Multiplikator für den von Dir gebauten Spannungsteiler errechnet:


float hauptspannung = spannungMessen() * 0.0205;

Jetzt stimmt die angezeigte Akkuspannung korrekt. Ich würde aber die interne Referenz
benutzen, die Dich unabhängig von der Spannungsversorgung macht. Die wird mit der Funktion



void Setup()
.....
analogReference(INTERNAL);

eingeschaltet.Allerdings ist dann mal wieder ein Widerstandskauf fällig, denn der Spannungsteiler muss jetzt auf die 1,1V der internen Referenz angepasst werden.

Den 18K kannst Du belassen und besorgst Dir noch einen 1K, den Du für den 5k6 einbaust.
Dann ist die maximal zu messende Spannung 20,9V und mit


float hauptspannung = spannungMessen() * 0.0204;

zeigt der Controller korrekte Messwerte an.

Grüße, steve

landebahnpflug
06.09.2011, 18:03
man Hard und Software in der Hand hat, wäre es doch eine Primaidee die Teiler so zu dimensionieren, dass die Faktoren nicht ganz so krum sind. Ad 1
Ad2 super das der Datentyp float erfunden wurde, schneller und nicht wenige präzise gehts aber mit einem Int.
Und sooo genau muss das ja auch nicht sein, da die Widerlinge ja auch so ihre Toleranzen und Abweichung über Wärme mitbringen..

mal so kleine tipps die das projekt vielleicht einfacher machen ---

ansonsten weiter so :)

st_canoe
06.09.2011, 20:02
man Hard und Software in der Hand hat, wäre es doch eine Primaidee die Teiler so zu dimensionieren, dass die Faktoren nicht ganz so krum sind. Ad 1
Ad2 super das der Datentyp float erfunden wurde, schneller und nicht wenige präzise gehts aber mit einem Int.
Und sooo genau muss das ja auch nicht sein, da die Widerlinge ja auch so ihre Toleranzen und Abweichung über Wärme mitbringen..

mal so kleine tipps die das projekt vielleicht einfacher machen ---

ansonsten weiter so :)

Hallo,

die verwendeten Metallfilmwiderstände haben typischerweise einen positiven TK (meist um 50) und driften demnach beide in die gleiche Richtung. Somit bleibt der Spannungsteiler weitgehend gleich. Auf jeden Fall kann diese Drift vom Arduino nicht aufgelöst werden. Mit der Dimensionierung des Spannungsteilers hast Du natürlich recht, der könnte anders gewählt werden. Aber Stefan hat wohl nichts anderes bekommen.

Wie könnte die Umrechnung mit Integer Werten schneller und einfacher aussehen? Schreib doch mal ein Beispiel. Denn Zeit und Speicherplatz für Variablen zu sparen ist immer bei den kleinen Microcontrollern immer von Vorteil. Es sollte halt so präzise wie möglich sein.

Grüße, steve

@Stefan: Ich könnte Dir einen BMP085 zukommen lassen...

landebahnpflug
06.09.2011, 20:53
ansatz
es hat ja keiner gesagt das der Wert von z.b. 3,769 V auch so verarbeitet wird.

eine Alternative 3769 als Wert verarbeiten.

Da aber offensichtlich relativ gemessen werden soll, ist der konkrete Spannungswert von untergeordneter Bedeutung. so das man die Spannung auch in % ( 10000 = 100.00%) der Referenzspannung angeben kann.

Wenn nur diese Werte "nach draussen" gehen, muss ich nur einmal wandeln.
dann kanns auch mal krum werden.

gerne wird auch bei Berechnung nicht auf gepasst hinsichtlich der Quantisierung

z.B.
u8 messwert_u8;
u8 rohwert_u8;

der rohwert möge im normalfall einen erwartungswert von 0x05 bis 0x1C haben
( damit kann man auch schon mal feststellen, ob man eine Überspannung hat oder eine offen Leitung)

messwert_u8 = rohwert_u8 /100* 64 /*beliebiger scalierungs faktor*/
messwert_u8 = rohwert_u8 * 64 /100 /*beliebiger scalierungs faktor*/
messwert_u8 =(u8)((u16)( rohwert_u8 * 64/100)) /*beliebiger scalierungs faktor*/

die obrigen zeile scheinen alle den gleichen wert liefern, möge jeder mal überlegen was im wertebereich so passiert.....


ein zweiter Tipp
wenn man * 64/100 durch einen begriff (define) erstetzt

#define SCALIERUNG_AD1 64/100

messwert_u8 =(u8)((u16)( rohwert_u8 * SCALIERUNG_AD1))

dann wird das ganze gut wartbar und auch noch in einem halbe jahr ist es verständlich lesbar.

Ich kann euch versichern das man sich ziemlich schnell Ärgert wenn man an gefühlten 30 Stellen solche Konstrukte pflegen muss.
ich möchte auch mehr generische Tipps geben und zum nachdenken anregen.... ich sehe so viel spannedes jeden Tag an Software -----

flying-doctor
07.09.2011, 14:09
ansatz
ein zweiter Tipp
wenn man * 64/100 durch einen begriff (define) erstetzt
#define SCALIERUNG_AD1 64/100
messwert_u8 =(u8)((u16)( rohwert_u8 * SCALIERUNG_AD1))
dann wird das ganze gut wartbar und auch noch in einem halbe jahr ist es verständlich lesbar.


Ich hatte genau solche Aspekte wie z.B. leicht-lesbaren Code im Hinterkopf.
Daher besteht >50% des Codes aus Kommentaren :) Was sprechende Aliases,
Präprozessordirektiven und Konstanten betrifft stimme ich Dir voll zu!

Das Programminterface habe ich recht konsequent aus Nutzersicht entwickelt
(Definition Nutzer = "Hobby-Weiterentwickler des Codes, der mittels Arduino
ein paar Sensorenwerte auf einer Graupneranlage anzeigen lassen möchte")

Wo ich aber widersprechen möchte, ist die vermeintliche Vereinfachung durch int-Werte.
Beim Modellieren habe ich didaktisch an den Nutzer gedacht. Es gehört beim
Entwickeln von klarem Code zum guten Stil, möglichst nah am beabsichtigen Zweck zu bleiben.
Und eine Methode, die den Zweck hat, eine dezimalen Fließkommawert
anzuzeigen, sollte auch einen solchen übergeben bekommen.Objektorientiert hatte
ich mir ein Messageobjekt vorgestellt, das mit Setter-Methoden zunächst gefüllt und dann versendet wird.

Natürlich könnte man dies alles mit vorzeichenlosen 8-Bit-Ganzzahlwerten
lösen. Dann könnte man aber auch gleich die umgerechneten Messwerte in
die entsprechenden Bytes des Arrays schreiben. Nur dann hat man
natürlich kein sauberes und leicht verständliches Interface...

Bei zeitkritischen Applikationen würde man anders vorgehen.
Aber hier ist der gesamte Code derart klein und schnell, dass ein oder zwei
Typecasts zwischen relativ elementaren Datentypen nur einen winzigen
Unterschied ausmachen. Wir sprechen über das "Füllen" eines 32 Byte
großen Arrays durch einen modernen 8 bzw. 16 Mhz Microcomputer,
der im Grunde sogar leistungsfähig genug wäre, das ganze Flugzeug
alleine zu fliegen;)

---------------------------------------------

Ansonsten warte ich noch auf Hardware:rolleyes:
Habe zwei neue Arduino pro mini Boards mit einem Logikpegel von 3.3 Volt
und 8 Mhz bestellt und einen BMP085-Senosor auf einer kleinen Platine.
Kommt wahrscheinlich am Frag
Hoffe, dass ich am Wochenende eine erste Vario-Version testen kann :D

flying-doctor
07.09.2011, 14:32
messwert_u8 = rohwert_u8 /100* 64 /*beliebiger scalierungs faktor*/
messwert_u8 = rohwert_u8 * 64 /100 /*beliebiger scalierungs faktor*/
messwert_u8 =(u8)((u16)( rohwert_u8 * 64/100)) /*beliebiger scalierungs faktor*/[/I]



Ja, sind gute Beispiele!
Daher plädiere ich - genauso wie Du dar, die Dinge klar zu formulieren

Also nicht
messwert_u8 =(u8)((u16)( rohwert_u8 * 64/100))

sondern z.B.


uint16_t messwert = readAnalog(PIN2);
float angezeigterWert = (float) messwert;
float konstante = 64/100;
angezeigterWert = angezeigterWert * konstante;

verschachtelte Klammern und impliziten Typenumwandlungen sind für Laien (wie mich)
einfach zu gefährlich. Da hat man möglicherweise fehlerhaft gerundete oder
abgeschnittene Werte...

Dein Beispiel zeigt sehr schön, dass Bugs im Detail lauern könnten!

landebahnpflug
07.09.2011, 21:03
Ja, sind gute Beispiele!
Daher plädiere ich - genauso wie Du dar, die Dinge klar zu formulieren

Also nicht
messwert_u8 =(u8)((u16)( rohwert_u8 * 64/100))
....................
Dein Beispiel zeigt sehr schön, dass Bugs im Detail lauern könnten!

messwert_u8 =(u8)((u16)( rohwert_u8 * SCALIERUNG_AD1))
das ist klar formuliert ...
und es ging im Kern drum floatigpoint Berechnungen zu lassen..

ok für die die es ineressiert die Auflösung:
(u16)( rohwert_u8 * SCALIERUNG_AD1)
die Berechnung wird als u16
als erstes aus gefüht . der cast auf u16 verhindert den Übelauf .
hat aber auch den Vorteil das diese Operation in Registern abläuft und man keinen
Platz von 2* 2Byte ( u16 sind 2 Byte) als ram verschleudert.
ein float benötigt zum Speichern sogar 4 Byte

messwert_u8 =(u8)((u16)( rohwert_u8 * SCALIERUNG_AD1))

castet wieder "runter " da für die übertragung ein 8 bit wert ( 1Byte)

also wenn man es langsam und strukturiert angeht also ganz einfach. :D

die Type cast benötigen kaum Laufzeit
und die Zuweisungearie wird von guten Compilern e weg rationalisert.

Es gibt bei der beurteilung von u.a. ein Kriterium das "lines of Code" heisst
und das sollte je modul je nach Geschmack des SW Q lers nicht zu gross werden.

Grundsätzlich sollte man kleine Funktion bauen die genau eine Aufgabe umsetzen
diese lassen sich dann wenn sie geschickt geschreiben sind auch immer wieder
verwenden ... und wir wollen ja voran komme und nicht immer änliches zeugs nochmal schreiben...

wenn man sich über legt wie man denn ein Codier problem löst stellt euch vor was ihr mach würdet
wenn ihr der Controller seit.
schreibt es auf
legt es weg
und macht das gleich noch mal einige tage später
und vergleicht die lösungen...
und dann macht das beste draus...

aber die teile sehen ganz nett aus, der Preis ist auch ok ich glaube mir juken die finger
ich bevorzuge zwar den PIC ( u.a. wegen des einfachen befehls satzes und den guten EMV Eigenschaften)
aber der Arduino reitzt schon.... nett klein scalierbar ( allein dafür ist es schon schlau code portierbar zuhalten heisst einfach)

GC
19.09.2011, 11:44
Hallo,

mit Begeisterung habe ich bei Eurer Entwicklungsarbeit mitgelesen.

Jetzt regt sich in mir aber der Wunsch in Besitz solcher Sensoren zu bekommen, da meine MX-20 demnächst bei mir eintrefen wird.

Flying Doctor schreibst Du evtl noch einen Artikel, wie man so ein Teil selber basteln könnte? Das würde bestimmt viele begeistern! Im Voraus schon mal Danke. Wink mit dem Zaunpfahl. ;)

flying-doctor
19.09.2011, 19:08
Liebe Freunde und Mitleser,

Meilenstein 2 ist fertig!
Alle beabsichtigen Funktionen sind implementiert
und funktionieren merkwürdig gut:p

vor über einer Woche habe ich in einer Nacht-und-Nebelaktion
das bekannte Tecodino-Setup um einen preiswerten Drucksensor erweitert.
Es gibt bessere und auch billigere, aber der Baustein BMP085 ist inzwischen
so weit verbreitet, dass man ihn recht leicht und preiswert bekommen kann:)

Die Software wurde komplett überarbeitet/refaktoriert und ist nun
weitestgehend objektorientiert. Hauptgrund war, dass ich einfach die
Standardsoftware-Klasse des Drucksensors verwenden wollte, ohne
copyrightwidrig aus anderer Open-Source-Software zu kopieren.
Statt dessen werden die relevanten Dinge nun geerbt...:D
Das ganze steht unter der GLPL-Lizenz und ist somit auch
professionell verwendbar; falls jemand mag...

Es gibt nun eine Hauptklasse, eine Klasse Vario
und eine Klasse Spannungssensor. Einfach und wirklich leicht zu pflegen!
Zur Benutzung die Dateien nur einen Ordner entpacken und mit der
Arduino-Software compilieren (http://www.arduino.cc/en/Main/Software).
Das kann jeder schaffen, der auch einen Original-Sensor updaten kann;)


Hier die Firmware zur freien Benutzung (GLPL)
https://docs.google.com/leaf?id=0B_IGDYyvKzvmYzg3NDkyNzctYWU2Mi00OTgzLWEwY2MtOTRkMjc5YTMzNjMx&hl=de

Der ganze "Tecodino" war für mich (Löt-Laie!!) in einer halben Stunde fertig!
Es sind ja nur Lötpunkte in einer gebohrten Platine, also wirklich schaffbar.
Der BMP085 wird mit 4 Kabeln am Tecodino angelötet. Der Spannungssensor
besteht in der Minimalvariante aus 2 Kabeln, 2 Widerständen und etwas Schrumpfschlauch.
alles komplett sind das 10-12 Löstellen:) Allerdings habe ich meinen alten Lötkolben
gegen einen etwas feineren für 13 € von Conrad ersetzt.

In den nächsten Tagen mache ich vielleicht eine Schritt-für-Schritt-Anleitung.
Es ist aber bereits jetzt alles sichtbar und dokumentiert, so das Ihr hoffentlich
die ersten Versionen testen könnt.

Mir hat das Projekt bisher viel Spaß gemacht.
Ich habe einiges gelernt. Und auch gelernt, dass die Graupner-Sensoren
richtig gut und vergleichsweise billig sind.

Der ganze Sensor mit Vario kostet im Eigenbau ca. 30 Euro.
Ich würde euch daher raten, für normale Flieger einen Original-Sensor zu nehmen
und nur für kleine Modelle selbst einen Tecodino zu bauen. Für etwas mehr Geld
bekommt man von Graupner einfach das bessere Modul!
Falls man nur einen reinen Spannungssensor will, ist die Entscheidung
natürlich einfacher. Die 12 € im Eigenbau lassen sich kaum unterbieten.

Schreibt mal eure Erfahrungen!

so sieht das Teil jetzt aus. Ist übrigens die 3.3 Volt-Version
mit 8 Mhz. Das reicht voll und ganz aus!
702920

Hier kann man die beiden kleinen Platinen getrennt sehen.
702921

Und hier nochmal von der Seite. Insgesamt 8.0 Gramm mit Kabeln.
702922

landebahnpflug
19.09.2011, 19:38
sieht das aus ...

Apollo11
21.09.2011, 22:08
Hallo Stefan,
das sieht richtig stark aus ... Chapeau.
Sobald die step by step Info da ist, werde ich das probieren. Bin schon richtig gespannt. Erfahrung poste ich dann.

Gruß
Apollo

dl3ed
10.10.2011, 16:36
hallo Ihr bastelnde Gemeinde.
Ich bin auch Atmel Begeisterter (habe bis jetzt mit BASCOM rumgemacht) und würde gerne mitbauen. Die SW habe ich mir schon runter geladen. Wo habt Ihr den Atmel pro mini und den Drucksensor bezogen? Detaillierte Informationen von dem Protokoll interessieren mich auch noch. Wer kann mir Diese Informationen zukommen lassen unter dl3ed@web.de
Danke im Vorraus Ulrich DL3ED

landebahnpflug
10.10.2011, 18:30
also entweder wie im Thread beschrieben oder einfach bei lipoly.de

also den ganzen Sermon lesen ......
;)

dl3ed
11.10.2011, 08:38
Entschludige das ich eine höfliche Frage gestellt habe.

landebahnpflug
11.10.2011, 18:31
Entschludige das ich eine höfliche Frage gestellt habe.

kein Problem.... :D

Smurf511
31.10.2011, 12:17
Hallo zusammen,

das Löten traue ich mir schon zu, anders sieht es aber mit dem Programmieren aus.

Gibt es eine Planung für einen fertigen Bausatz ?
Ich finde die Preise der Graupner-Sensoren absolut legitim, gerade wenn man den Aufwand sieht, aber auch ich habe in einem Merlin das Platzproblem mit einem Stromsensor und bin auch an dem Vario dafür sehr interessiert.

Vielleicht könnte der Threadersteller mal eine grobe Kalkulation vorstellen, in dem auch sein aufwand berechtigt berücksichtigt wird, vielleicht findet sich dann ja eine Menge an Vorbestellern ?

Danke für eine Info...

Evgenij
01.11.2011, 19:30
to flying-doctor
Wie hast Du Stromversorgung organisiert?
So wie ich sehe, hast Du SV von Empfänger genommen, es ist 5V.
Dein Arduino ist 3,3V.
Ist es nicht sinnvoll für SV RAW Anschluss zu benutzen?

Für die die Vario selber löten wollen:
bei Lipoli.de gibt es BMP085 Baustein und fertige BMP085 Platine.
Wenn man nur BMP085-Baustein kauft und selber dazu 2 Widerstände lötet, spart 9€.

MfG
Evgenij

Evgenij
02.11.2011, 21:02
Ich habe jetzt provisorisch Voltsens. zusammengebaut.
Zwei Bemerkungen die ich im Text nicht gefunden habe:
1.auf dem Bild unter #32 ist Anschluss A3 angeschlossen richtig ist A0
2.Nicht Vergessen im Menü-Telemetri-Sensor "General Modul" wählen.

Sonst funktioniert.;)

dl3ed
10.11.2011, 11:02
Hallo Zusammen,
man sollte sehr vorsichtig sein mit dem Anschluss des Atmels an den Empfänger. Da der Empfänger ein bidirektionale Schnittstelle auf der Telemetrieleitung hat kommt es vor das der Empfänger Daten anfordert (sprich aus dem Bus Sendet) und gleichzeitig der Atmel Daten ausgibt. Somit arbeiten beide Schnittstellen gegeneinander. Dies kann zur Zerstörung der Telemetrieschinttstelle führen. Es wäre deswegen wichtig das man auch auf der Atmel Seite eine bidirektionale Schnittstelle verwendet. Dies ist mit einem Gatter vom 4066 (dies ist ein 6 Pin IC, gibt es z.b. bei Conrad) einfach zu realisieren. Somit ist man dann auch in der Lage das Empfängerprotokoll auszuwerten.

Evgenij
11.11.2011, 17:03
Hallo Zusammen,
man sollte sehr vorsichtig sein mit dem Anschluss des Atmels an den Empfänger. Da der Empfänger ein bidirektionale Schnittstelle auf der Telemetrieleitung hat kommt es vor das der Empfänger Daten anfordert (sprich aus dem Bus Sendet) und gleichzeitig der Atmel Daten ausgibt. Somit arbeiten beide Schnittstellen gegeneinander. Dies kann zur Zerstörung der Telemetrieschinttstelle führen. Es wäre deswegen wichtig das man auch auf der Atmel Seite eine bidirektionale Schnittstelle verwendet. Dies ist mit einem Gatter vom 4066 (dies ist ein 6 Pin IC, gibt es z.b. bei Conrad) einfach zu realisieren. Somit ist man dann auch in der Lage das Empfängerprotokoll auszuwerten.

Was soll hier zerstört werden?
Hier gehts um BUS-System und in schlimmsten Fall führt zur Kollision für kurze Zeit.
Es kann man mit zwei Frauen vergleichen, die miteinander gleichzeitig reden und keine hört andere:D

Mulder
11.11.2011, 17:08
Hallo,

ich hatte bei mir das Problem, dass die Anzeige an der MX-12 teilweise gar nichts mehr anzeigt hat.

Nun habe ich mal die Kommunikation mittels HTerm und einem FT232 RL USB-RS232 Konverter zwischen meinem Empfänger und einem Original Vario

mitgehört und den Code um die bidirektionale Kommunikation erweitert, somit läuft es bei mir zuverlässiger. Den RX und TX Anschluss des uC´s

habe ich mit je 510 Ohm auf den Signalpfad zum Telemetrieeingang des Empfängers geführt -> macht Jeti mit seinen AVR´s wohl auch so... Einen

zusätzlich Baustein benötigt man normalerweise nicht. Für den Kollisionsfall hängt der Widerstand dazwischen.


Hier habe ich übrigens eine (teilweise) Dokumentation des HOTT Protokolls gefunden:

http://forums.openpilot.org/topic/7282-free-transmission-of-telemetry-with-voice-feedback/ -> siehe: Sensorenschnittstelle_V3.doc



Hier der Codeauschnitt in dem zuvor auf die Anfrage vom Empfänger gewartet wird und nur zum Senden die TX Leitung als Ausgang geschaltet wird:


void GMessage::send()
{
int incomingByte = 0;

UCSR0B &=~(1<<TXEN0); // Set TX output as input
pinMode(0,INPUT); // 0 = tx;

if (Serial.available() > 0)
{
// read the incoming byte:
incomingByte = Serial.read();
}

if (incomingByte == 0x8d) //0x8d) // Wait for Sensorrequest from receiver ; 0x89 -> vario; 0x8d -> General Moudule
{
UCSR0B |=(1<<TXEN0); // Switch TX to Output only for transmitting the sensor string
pinMode(0,OUTPUT); // 0 = tx

// Varioteststring (zuvor vom original Vario mitgeloggt, incl. Checksumme):
//uint8_t message_array[36] = {
//0x7C, 0x89, 0x00, 0xF5, 0x01, 0xF6, 0x01, 0xF4, 0x01, 0x26, 0x75, 0x4E, 0x75, 0x30, 0x75, 0x00, 0x7D, 0x67 }; // Vario Teststring...
// Chechsumme auskommentieren und LENGTH gleich 18 setzen zum testen...

message_array[MESSAGE_CHECKBYTE_POS] = checksumme(message_array);

for(int i = 0; i < LENGTH; i++) // LENGTH; i++) für Varitest LENGTH gegen 18 ersetzen
{
Serial.print(message_array[i], BYTE);
delay(PROZESSOR_GESCHWINDIGKEITS_TYP);
}
UCSR0B &=~(1<<TXEN0); // Set TX output as input again
pinMode(0,INPUT); // 0 = tx;
}
}




Interessant finde ich auch, dass Hott eine Textübertragung mit eingebaut hat, mit der die Sensoren konfiguriert werden können -> fände ich

besonders interessant um z.B. meinen WII Copter per HOTT zu konfigurieren...



Hier noch einige meiner bisherigen Erkenntnisse durch das Mitloggen und der Doku auf http://forums.openpilot.org:


Empfänger sendet ohne Sensor, Sender aus:

00 00 00 00 0x7f 00,

dann:

0x7F 0xFF fortlaufend




Empfänger sendet ohne Sensor, Sender an, kein Sensor im Sender ausgewählt:

00 00 00 00

dann 0x80 0x80 fortlaufend

0x80 ist wohl um den Empfänger selbst zu addressieren..


Sensoren im Sender ausgewählt:

nach Einschalten des Empfängers immer zuerst

00 00 00 00


..jedoch mit "General Moudul" ausgewählt:

0x80 0x8d fortlaufend


..jedoch mit Electric Air Moudul" ausgewählt:

0x80 0x8e fortlaufend


..jedoch mit Vario Moudul" ausgewählt:

0x80 0x89 fortlaufend


..jedoch mit "GPS Moudul" ausgewählt:

0x80 0x8A fortlaufend




Kein Sensor Angeschlossen, Vario im Senser ausgewählt, Menü "Einstellen, Anzeigen" aufgerufen:


Empfänger sendet "7F FF" fortlaufend

... nun wird das Vario angesteckt:

ASCII:
??????????<\n>??{?<\0>
Vario Sensor <> Altitude : 0.0m Min. : 0.0m Max. : 0.0mDiff./Sec : 0.0mDiff./ 3S

: 0.0mDiff./10S : 0.0m }??{?<\0>


HEX:
7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 0A 7F FF 7F FF 7B 80 00 20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C

3E 20 41 6C 74 69 74 75 64 65 20 3A 20 20 20 20 20 20 30 2E 30 6D 20 20 20 20 4D 69 6E 2E 20 20 3A 20 20 20 20 20 20 30 2E 30 6D 20 20 20 20 4D

61 78 2E 20 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 53 65 63 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 20 33 53 20 3A

20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

20 20 20 20 7D C4 7F FF 7B 80 00


reines Packet:

ASCII:
Vario Sensor <> Altitude : - 0.1m Min. : - 0.1m Max. : 0.0mDiff./Sec : 0.0mDiff./ 3S : 0.0mDiff./10S :

0.0m }??{?<\0>

bzw. HEX:
20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C 3E 20 41 6C 74 69 74 75 64 65 20 3A 20 20 2D 20 20 20 30 2E 31 6D 20 20 20 20 4D 69

6E 2E 20 20 3A 20 20 2D 20 20 20 30 2E 31 6D 20 20 20 20 4D 61 78 2E 20 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 53 65 63 20 3A 20

20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 20 33 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20 20 20 20 30

2E 30 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D E0 7F FF 7B 80 00

Vario angesteckt, Menü verlasse, Messwerte vom Vario werden fortlaufend gesendet:

7C 89 00 F5 01 F6 01 F4 01 26 75 4E 75 30 75 00 7D 67
7C 89 00 F5 01 F6 01 F4 01 30 75 4E 75 30 75 00 7D 71

Umschaltung Menü -> Messwertübertragung:

ASCI:
Diff./10S : 0.0m }???|?<\0>?<1>?<1>?<1>0uNu0u<\0>}q??|?<\0>?<1>?<1>?<1>&uNu0u<\0>}g??|?
HEX:
44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D DF 80 89 7C

89 00 F5 01 F6 01 F4 01 30 75 4E 75 30 75 00 7D 71 80 89 7C 89 00 F5 01 F6 01 F4 01 26 75 4E 75 30 75 00 7D 67 80 89 7C 89


Lesen vom Vario mittels Hterm:

Vermutlich richtig so: 0x80 (Emfpfängerbyte) 4ms Pause 0x89 (Adressierung Vario)

da keine Delays mit Hterm erzeugt werden können:

PC: 0x80 0x80 0x89
Vario:
ASCII: |?<\0>?<1>?<1>?<1>Nu&u0u<\0>}g
HEX: 7C 89 00 F5 01 F6 01 F4 01 4E 75 26 75 30 75 00 7D 67

-> 80 80 89 wird natürlich als Echo dargestellt, da RX und TX über Wid. verbunden ist, die Antwort ist ohne PC Echo dargestellt



Textausgabe des Varios starten:

Vermutlich richtig so: 0x7F 4ms Pause 0xFF (im letzen FF sind die Tastendrücke codiert!)

da keine Delays mit Hterm erzeugt werden können:

Experimentell vom PC gesendet:

7F FF FF

Antwort vom Vario:

ASCII:
{?<\0> Vario Sensor <> Altitude : - 2.4m Min. : - 3.0m Max. : 2.5mDiff./Sec : 0.5mDiff./ 3S : 0.1mDiff./10S :

- 0.2m }<3>

HEX:
7B 80 00 20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C 3E 20 41 6C 74 69 74 75 64 65 20 3A 20 20 2D 20 20 20 32 2E 34 6D 20 20 20

20 4D 69 6E 2E 20 20 3A 20 20 2D 20 20 20 33 2E 30 6D 20 20 20 20 4D 61 78 2E 20 20 3A 20 20 20 20 20 20 32 2E 35 6D 44 69 66 66 2E 2F 53 65 63

20 3A 20 20 20 20 20 20 30 2E 35 6D 44 69 66 66 2E 2F 20 33 53 20 3A 20 20 20 20 20 20 30 2E 31 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 2D 20

20 20 30 2E 32 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D 03


Tasten (Menünavigation Überprüft mittels 2 Varios, eines am PC eines am Emfänger):

FF: 1111 1111: Keine Taste gedrückt

FE: 1111 1110: rechts

FD: 1111 1101: down

FB: 1111 1011: up

F9: 1111 1001: set

F7: 1111 0111: links


Grüße,
Jochen

trailblazer
01.12.2011, 19:31
Ich habe gestern auch einfach mal ein mini Arduino mit der tecodino Software (mit den vorgenannten Änderungen) beladen - funktionierte alles gleich auf Anhieb :)
Da ich die Telemetrie hauptsächlich wegen der verflogen Kapazität benutzen möchte (Protos und Stinger EDF Jet) werde ich mal versuchen meine noch vorhandenen Allegro Stromsensoren einzubinden. Leider sind es die "alten" 5V only Sensoren (50A) und ich würde gerne alles auf 3,3V Arduinos umstellen. Falls also jemand ne Bezugsquelle (ausser der Apotheke Farnell) für aktuelle Allegro Stromsensoren (z.B. ACS758 100A unipolar) hat - immer her damit ;)

Mulder
09.12.2011, 17:59
Hallo trailblazer,

hab meinen ACS75xx von digikey, dort kann man meines Wissens aber nicht privat bestellen.

Schau mal hier:

http://darisusgmbh.de/shop/

Grüße,
Jochen

trailblazer
09.12.2011, 22:37
Danke für den Link Jochen! Die gewünschten Sensoren hat der Laden zwar nicht direkt ab Lager, aber ich werde trotzdem dort bestellen und hoffe, dass die angegebenen 3-5 Tage einigermassen realistisch sind ;)
Preislich ist der Laden auf jeden Fall sehr interessant, 30% günstiger als Farnell und nur 5€ Versandkosten.
Meine Arduinos sind nun da und warten auf ihren Einsatz. Wahrscheinlich komme ich erst über Weihnachten dazu, alles fertigzubasteln, aber wenn es soweit ist, dann melde ich mich hier wieder :D

BruchPilot-KWh
11.12.2011, 18:00
Hallo werte Bastler

Erstmal muss ich sagen, eine spitzen Idee und eine sehr gute Arbeit von euch.Besonders vom Flying-Doc! .

Ich wollte auch so ein "Sensor" basteln. Aber ich scheitere schon am einfachen ;-)

Ich wollte/würde die Daten gerne via HyperTerminal sichtbar machen.

Mein Aufbau:

Sender MX-12:
Empfänger: GR-12 (Ch5 ist dort der Telemetrie IN) Anlage ist auf Sensor umgestellt.
USB --> RS232: 1x Original Graupner Umsetzter (7168.6) und/Oder 0-8-15 USB-->RS232 mit Pollin Pegelwandler.
FW-Update des GR-12 funktioniert!
Habe kein Sensor am Empfänger also der Telemetrie Ausgang/Eingang geht direkt an den Umsetzer.

Dann habe ich in Hterm 19200bps/8, VT100 eigestellt.
So, ich erhalte immer nur Hieroglyphen in 200ms Abständen. Das wird der Request sein, den ich erstmal gerne "sehen" möchte.

Habe mal mit der Übertragungsrate und pull Up pull down R´s gespielt, nix. Sehe keine schönen HEX Werte wie Ihr.

Vielleicht hat einer mal eine Idee oder kostbare Hinweise

Ach ja, mein Ziel: Ich möchte das alles natürlich klein haben. Deswegen würde ich den Sensor mit Attiny13 etc. mal versuchen wollen.

Tip für Vario-Drucksensor: Drucksensor MOTOROLA SPX3058D bei Pollin.de zu gebrauchen? Ich habe mal einen bestellt.

Schönen Abend noch. Und danke

maccl
11.12.2011, 19:52
Hallo Zusammen,

vorweg, ich habe leider kaum erfahrungen mit Sensoren und Programmierung.
also ich bitte um nachsicht wenn sich meine Fragen blöd anhören sollten ;)

nun:
ich beabsichtige mir einen multicopter zu bauen.
als steuerungplatine wird bei den meisten boards ein arduino eingesetzt.
zb flyduino
http://www.flyduino.net/

http://static.rcgroups.net/forums/attachments/2/4/0/2/7/1/a4054534-251-final_flyduino_pinout_MegaPirate.jpg?d=1306981431

jetzt stelle ich mir die frage ob dieses board welches mit der multiwii software (http://www.multiwii.com/) betrieben wird,
auch telemetrie tauglich mit HOTT ist.


Kenn sich evtl jemand damit aus?



ich habe gesehn das HOTT telemetrie mit miultikoptern möglich ist.
siehe hier (nur leider zu teuer für mich)

https://www.mikrocontroller.com/index.php?main_page=index&cPath=69&zenid=3444a5388dda17e74c50d24c6d78cc9b
http://mikrokopter.de/ucwiki/HoTT?highlight=%28hott%29#Anschluss_Empf.2BAOQ-nger_an_die_FlightCtrl2.1

dank und gruß

trailblazer
11.12.2011, 22:29
Das ist sicherlich möglich - muss aber natürlich in der Software implementiert werden!

MeiT
29.12.2011, 17:37
Hi,

ich würd gern mitmachen beim DIY.

Hab mal schnell nen AVR mit dem HOTT Bus verbunden.

Der AVR sendet alle 200ms die Sequenz:


...
mit 3 Einzelzellen-Lipo
Frage des Empfängers (request) 80 8d:
Antwort des General-Air-Modul: 00 7c 8d 00 d0 cf cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 01 30 75 78 00 00 00 00 00 00 00 80 7d 84 00
...

Auf dem Oszi kann man erkennen, dass es genau nach dem Request ist.
Aber an der Funke kommt nix an.

Hab leider schon die V4 drauf.
Ob es an der V4 liegt?

Ich habe bisher keine einzigen Sensor, da ich HOTT erst seit gestern habe und heute kein Händler in der Nähe sowas da hatte.

Da ich mehr Hardwarelastig bin, könnten wir uns vielleicht gegenseitig unterstüzten.

Grüße
MeiT

Mulder
29.12.2011, 19:00
Hallo MeiT,

ja, es liegt an der V4. Hab gestern Sender u. Empänger upgedatet. Mein original Vario musste ich ebenfalls updaten, da es nicht mehr erkannt wurde.

Grüße,
Jochen

trailblazer
30.12.2011, 12:38
Ich habe nun auch alles an "Zutaten" zusammen und wollte demnächst endlich mal loslegen. Das Update auf V4 habe ich mir aber noch verkniffen, da ich z.Z. nicht weiss, inwiefern sich das ganze Protokoll geändert hat. Gibt es da Informationen drüber?

Mulder
30.12.2011, 12:58
Hallo,

bin gerade beim Mitloggen, hier mal mein bisheriger Stand:


80 89 bzw. mit Hterm wg. delay: 80 80 89



Antwort Vario V4:

7C 89 00 90 00 F3 01 F4 01 F3 01 3A 75 30 75 08 75 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7D C0



Antwort Vario V3:

7C 89 00 F4 01 F4 01 F4 01 58 75 30 75 30 75 00 7D 78



-> es wurde Erweitert...




Textübertragung (V4):

hex:

00 00 00 7D 14 (ende binärübertragung) 7F 9F 7B 90 00 20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C 3E 20 41 6C 74 69 74 75 64 65 20 3A 20 20 20 20 20 20 31 2E 31

6D 20 20 20 20 4D 69 6E 2E 20 20 3A


-> hier bin ich ins Einstellmenü gewechselt, "7F 9F" schaltet also in den ASCII mode...



ascii:

<\0><\0><\0>}<20>?{?<\0> Vario Sensor <> Altitude : 1.1m Min. : ( ... )



Anfrage ans Vario:

7F pause 9F

bzw. 7F 80 9F (Hterm)


Antwort V4 Vario:

ascii:
{?<\0> Vario Sensor <> Altitude : - 0.6m Min. : - 1.8m Max. : 1.1mDiff./Sec : 0.3mDiff./ 3S : 0.2mDiff./10S : 0.0m }

<4> <> Altitude : - 1.2m Min. : - 1.8m Max. : 1.1mDiff./Sec : - 0.4mDiff./ 3S : 0.0mDiff./10S : 0.2m }<15>??{?<\0> Vario

Sensor <> Altitude : - 0.3m Min. : - 1.8m Max. : 1.1mDiff./Sec : 0.1mDiff./ 3S : 0.0mDiff./10S : 0.4m


hex:

7B 90 00 20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C 3E 20 41 6C 74 69 74 75 64 65 20 3A 20 20 2D 20 20 20 30 2E 36 6D 20 20 20 20 4D 69 6E 2E 20 20 3A 20 20 2D

20 20 20 31 2E 38 6D 20 20 20 20 4D 61 78 2E 20 20 3A 20 20 20 20 20 20 31 2E 31 6D 44 69 66 66 2E 2F 53 65 63 20 3A 20 20 20 20 20 20 30 2E 33 6D 44 69 66 66 2E 2F 20 33 53 20

3A 20 20 20 20 20 20 30 2E 32 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D 04 20 3C 3E 20

41 6C 74 69 74 75 64 65 20 3A 20 20 2D 20 20 20 31 2E 32 6D 20 20 20 20 4D 69 6E 2E 20 20 3A 20 20 2D 20 20 20 31 2E 38 6D 20 20 20 20 4D 61 78 2E 20 20 3A 20 20 20 20 20 20 31

2E 31 6D 44 69 66 66 2E 2F 53 65 63 20 3A 20 20 2D 20 20 20 30 2E 34 6D 44 69 66 66 2E 2F 20 33 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20

20 20 20 30 2E 32 6D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D 0F 7F 80 9F 7B 90 00 20 20 20 20 56 61 72 69 6F 20 53 65 6E 73 6F 72 20 20 20 3C 3E 20 41

6C 74 69 74 75 64 65 20 3A 20 20 2D 20 20 20 30 2E 33 6D 20 20 20 20 4D 69 6E 2E 20 20 3A 20 20 2D 20 20 20 31 2E 38 6D 20 20 20 20 4D 61 78 2E 20 20 3A 20 20 20 20 20 20 31 2E

31 6D 44 69 66 66 2E 2F 53 65 63 20 3A 20 20 20 20 20 20 30 2E 31 6D 44 69 66 66 2E 2F 20 33 53 20 3A 20 20 20 20 20 20 30 2E 30 6D 44 69 66 66 2E 2F 31 30 53 20 3A 20 20 20 20

20 20 30 2E 34 6D 20 20 20 20 20


Jochen

MeiT
11.01.2012, 20:30
Hi,

einfach nur Sensordaten zu senden, ohne auf den Request zu hören, hat bei mir ab und zu zu einem "blue Screen" im Sender geführt.

Nach abhören vom Request und "nur senden nach Request" macht keine Probleme.

Das hat auch den Vorteil, dass man GAM und EAM gleichzeitig in einem Sensor implemetieren kann ;)

Grüße

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GAM-1.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GAM-2.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAM-1.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAM-2.JPG

ingo_s
12.01.2012, 10:16
@ MeiT
den Sensor Bus sollte man schon nach seinen Spezifikationen betreiben.

Aber eine Fehlfunktion eines Sensors lässt sich ja nie ganz ausschließen, daher die Frage:
funktionierte die Fernsteuerung denn wenigstens noch trotz "Blue Screen" ?

Wenn nicht finde ich es sehr bedenklich, wenn sich eine Fernsteuerung durch nicht konforme Sensordaten ausser Betrieb setzen lässt. Graupner müsste da dann schnellstens nachbessern.

Gruß Ingo

MeiT
12.01.2012, 10:24
Hi,

die ganzen Sachen laufen noch bei mir noch auf dem Basteltisch.
Servos hatte ich nur einmal angeschlossen.
Eingebaut in Modelle habe ich noch nix.

Ich werde es nochmal nachstellen und schauen ob die Funke noch geht.

Grüße

MeiT
12.01.2012, 18:02
Hallo,

ich schaffe es nicht mehr es nachzustellen.

Damals ist es aufgetretten wo das erste Byte der Sensordaten mit dem Request kollidiert sind.

Grüße

mha1
14.01.2012, 22:16
Hallo,

interessante Sache. Ich lese hier mit und versuche zu verstehen wie HoTT Telemetrie funktioniert. Ich hoffe Ihr könnt mir ein wenig auf die Sprünge helfen.

Mein Verständnis bitte ggf. richtigstellen:
- der Sender (über den Empfänger) als Master die Telemetriemodule adressiert und zum Sprechen auffordert.
- der Empfänger hat ein "eigenes" Telemetriemodule eingebaut, das wie externe auch adressiert wird
- jedes Modul hat eine eigene Adresse:
0x80 Empfänger
0x8d General Air Modul
0x8a GPS
0x89 Vario
0x?? General Engine Modul
0x?? Electric Air Modul
- HoTT unterscheidet Binärmodus und Ascii Modus
- der ASCII Modus wird (nur?) zur Konfiguration der Module (z.B. Alarmschwellen) verwendet
- Im ASCII Modus können Tastendrücke vom Sender zum Telemetriemodul geschickt werden:
0x7f 0xff 0xff keine Taste gedrückt
0x7f 0xff 0xfe rechts
0x7f 0xff 0xfd down
0x7f 0xff 0xfb up
0x7f 0xff 0xf9 set
0x7f 0xff 0xf7 links

Fragen:
- Wie werden die Telemetriemodule im ASCII adressiert oder senden die dann dauernd?

Danke

Michael

MeiT
15.01.2012, 08:50
Moin,

Request Textmodus vom Empfänger:

0x7f 0xDf keine Taste gedrückt
0x7f 0xDe rechts
0x7f 0xDd down
usw..

Das D ist die Adressierung an den GAM Sensor.

0x7f 0xAe wäre GPS Testmodus mit gedrückter "rechts" Taste.

General Air und General Engine haben beide D als Adresse

Grüße

mha1
15.01.2012, 16:19
Danke Dir. Hört sich sehr plausibel an. In der Sequenz, die ein Kollegen gepostet hat: was gehört zum Protokoll, was sind Daten?

Sender: 80 89 Aufforderung vom Sender an Adresse 9 (Vario) Daten im Binärformat zu senden

Vario antwortet mit 45 (stimmt das?) Byte Frame
7C 89 00 90 00 F3 01 F4
01 F3 01 3A 75 30 75 08
75 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 7D C0

Ich gehe davon aus, dass die ersten zwei Byte eine Kennzeichnung sind.
0x7c = Kennzeichen, dass Binärdaten folgen
0x89 = Wiederholung der Anforderung, damit der Sender die Daten zuordnen kann
0x00 = gehört das schon zu den Daten?
... = Datenstruktur ???
0x7d = sieht aus wie ein Endemarker
0xC0 = ist das eine Checksumme?

MeiT
17.01.2012, 19:58
Ja, das wäre dann eine komplette Protokollsequenz.
Der Code funktioniert aber wunderbar!

Offenbar verarbeitet der Empfänger zuerst die Antwort,
bevor er einen neuen Request.
Es klappt und daher würde ich jetzt ungerne mit Interrupts arbeiten.
Außerdem ist der aktuelle Code rechtlich einwandfreier (nur "antworten")

:cool:

Hi,

V4 arbeitet aber mit mehreren Sensoren und Request.
"Zuhören" ist nicht nur für den Request notwendig, sondern auch für Kollisionsvorsorge.

Bei V4 können mehrere Sensoren gleichzeitig online sein. Zwar wird jeder Sensor einzeln mit einem Request abgefragt, aber wenn ein anderer Sensor Daten sendet die wie ein "Request" vom Empfänger aussehen, kann es zur Kollision kommen.

Das heist, man muss nicht nur auf den Request hören, sondern auch "hören" ob es wirklich ein Request ist oder eben Daten von anderen Sensoren.

Ich weis, arbeiten mit Interrupts ist kompliziert, aber es geht eigentlich nix an Interrupts vorbei.

PS: mit Interrupts kann man den den Ablauf sehr viel schneller machen ;)

Grüße

mha1
17.01.2012, 20:57
Hallo,

habe mir die Checksummenberechnung angesehen. In der verlinkten V3 Spec besteht das Prüfbyte aus den letzten 8 bit der Summe aller Datenbytes (inkl. Start- und Endekennung).

Mit den hier geloggten Daten kann ich das bestätigen. Warum verwendet Tecdino eine ganz andere Berechnung?

#include <stdio.h>

typedef unsigned int uint16_t; // 16 bit unsigned
typedef unsigned char uint8_t; // 8 bit unsigned

uint8_t daten1[] = { 0x7c, 0x8d, 0x00, 0xd0, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x01, 0x30, 0x75, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x7d, 0x84 };


uint8_t daten2[] = { 0x7C, 0x89, 0x00, 0x90, 0x00, 0xF3, 0x01, 0xF4, 0x01, 0xF3, 0x01, 0x3A, 0x75, 0x30, 0x75,
0x08, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xc0 };

uint8_t daten3[] = { 0x7C, 0x89, 0x00, 0xF4, 0x01, 0xF4, 0x01, 0xF4, 0x01, 0x58, 0x75, 0x30, 0x75, 0x30, 0x75,
0x00, 0x7D, 0x78 };


uint8_t crc(uint8_t *sensordaten, uint8_t startbyte, uint8_t endbyte)
{
uint16_t sum = 0;

for (uint8_t i = startbyte; i < endbyte; i++) {
sum = sum + sensordaten[i];
}

return sum & 0xff;
}

int main()
{
printf("CRC expected = %2x, CRC calculated = %2x\n", daten1[sizeof(daten1)-1], crc(daten1,0,sizeof(daten1)-1));
printf("CRC expected = %2x, CRC calculated = %2x\n", daten2[sizeof(daten2)-1], crc(daten2,0,sizeof(daten2)-1));
printf("CRC expected = %2x, CRC calculated = %2x\n", daten3[sizeof(daten3)-1], crc(daten3,0,sizeof(daten3)-1));

return 0;
}

Ergebnis:
CRC expected = 84, CRC calculated = 84
CRC expected = c0, CRC calculated = c0
CRC expected = 78, CRC calculated = 78

MeiT
17.01.2012, 21:03
Hallo,

habe mir die Checksummenberechnung angesehen. In der verlinkten V3 Spec besteht das Prüfbyte aus den letzten 8 bit der Summe aller Datenbytes (inkl. Start- und Endekennung).

Mit den hier geloggten Daten kann ich das bestätigen. Warum verwendet Tecdino eine ganz andere Berechnung?
...

Hi,

Summe aller Bytes, dann die letzten 8 Bit funktioniert mit V3 und V4, im Binär und Textmodus.

Grüße

Gast_28792
17.01.2012, 21:55
CRC:

Alle Bytes ab Byte 1 eines Message Blocks und inklusive des Endezeichens (also alles außer CRC, logischerweise:D) in einer unsigned 16Bit-Variablen addiert, und davon das Low-Byte.

Identisch für Textmode (173 Bytes inkl. CRC) und sensorbezogenen Binärmode (45 Bytes inkl. CRC) und SmartBox-bezogenen Binärmode (55 Bytes inkl. CRC), also SmartBox an einem Tx-Modul, wobei es ja noch einen Header mit Rx-Daten gibt.

(Das war eben v4 da oben, also die Message-Block-Längen. Das CRC wird ansonsten in v3 identisch berechnet. Übrigens schert sich die SmartBox einen Feuchten um stimmendes CRC, via Rx-Tx muss es aber stimmen.)

MeiT hatte es schon.

----------

Ach so, und wenn ich schon mal dabei bin: Das ist hier das übliche Idle-Line-Protokoll, um auf einem 1-Wire-Bus kollisionsfrei mit n Slaves arbeiten zu können. Ich zitiere mich mal selbst:

Es können sich mehrere Sensoren (Slaves) parallel auf dem 1-Wire-Bus befinden.
Um insbesondere im Binärmodus zu verhindern, dass ein Sensor n+1 die gerade gesendeten Daten
eines Sensors n versehentlich als seine Adressierung mißversteht, muss ein Idle-Line-Protocol
definiert werden:
Ist ein Sensor der Meinung, er wurde gerade angesprochen (0x7F sensorID (Text) oder 0x80
binäreSensorID), prüft er nach einer Pause von 5ms+, ob nicht inzwischen ein anderer
Sensor gesendet hat (prüft seinen UART-Buffer oder wie auch immer). Hat ein anderer Sensor
gesendet, handelte es sich nicht um eine Adressierungssequenz, sondern einen binären Byte-
String der Daten eines anderen Sensors, der zufällig so aussah. Somit wird Kollision auf dem
Bus verhindert, oder, andersherum, Koexistenz per serieller Adressierung auf dem Bus
ermöglicht.

Das HoTT-Idle-Line-Protocol schreibt 5ms Wartezeit nach (vermeintlichem) Empfang der
eigenen ID und danach prüfen auf Busaktivität zwingend für alle Busteilnehmer vor!

Ein Sensor muss seine Antwort-Bytes im Abstand von nicht weniger als 2ms senden, aber auch
nicht mit viel größerem Abstand, um die Anzahl der Bytes im jeweiligen Zeitfenster übertragen zu
können (Textmode: -->2 Bytes <--3+168+2 Bytes, Binärmode: -->2 Bytes <--45 Bytes).

Mehr verrate ich nicht, sonst bin ich noch schuld an Eurer Langeweile.:)

Tom

mha1
19.01.2012, 20:11
Danke Tom,

bin beruhigt, Du liest mit. Dann kann nichts schiefgehen.:)

Wurden die Datenstrukturen, außer mit Nullbytes Auffüllen auf die neuen Framelängen geändert?

Und kannst Du ein paar Worte zur Smartbox sagen? Habe bisher nur Textmode und Binärmode verstanden.

VG Michael

PS: Was mir gerade in den Sinn kommt, ist eine Minimaltelemetrie für den JLOG1. Also z.B. Kapaalarm per ATTiny weiter an einen HoTT Empfänger ...

Gast_28792
19.01.2012, 21:42
PS: Was mir gerade in den Sinn kommt, ist eine Minimaltelemetrie für den JLOG1. Also z.B. Kapaalarm per ATTiny weiter an einen HoTT Empfänger ...
Jo, das ginge natürlich. Am besten den OpenFormat-Livestream (asynchron-seriell 9k6) von JLog1 auswerten, da sind alle Daten und auch die Alarme einzeln drin. So macht es ja auch Linus mit seiner eigenen Telemetrie mit XBee, mit JLog1 und 2.

Meine eigene Telemetrie "JTX" macht es ja quasi auch so, nur, dass ich die binären Datenpakete des JIVE in einem am Modell befindlichen JLog2 (Hardware) auswerte, logge und alarmbewerte, dann modifiziere und mit eigenen Daten auffülle (Status, mAh nur am Modell berechnet wg. möglichem Datenverlust auf der Strecke, JLog-eigene Sensoren (Daten)) und per XBee zu einem zweiten JLog2 (Hardware) am Boden sende, der mit den Basisdaten in den Paketen genau dasselbe macht, wie das Teil am Modell. JLog-eigene Sensordaten sind für den nur genauso "virtuell" wie die Sensordaten aus dem JIVE. Er kann nun auch loggen, oder man schaltet das im JLC ab. Er macht dann einfach JETI(box) oder Unidisplay oder HoTT (SmartBox) zur Anzeige und alarmiert mit eigenem Geber (Buzzer, LED). Siehe hier (http://62.153.249.80/jlog/jlog2/d-i-y-corner/jlog2-wireless-jtx-aufgebaut).
Bitte unbedingt auch die Nachsätze beachten. Ungeschachtelt zum Uplink im selben Band zu senden (Was übrigens auch Spektrum mit dem TM1000 macht!), kann u.U. leicht ungesund für die Hauptanwendung sein. In DE bleibt uns dann nur das 433MHz-ISM-Band als Ausweg, was ich als HAM hasse, oder eben evtl. 868MHz.
EDIT: Oops, Du sprachst ja von HoTT, da war mein Gelaber über "JTX" nicht ganz passend. Sorry, nicht aufgepasst.:rolleyes:


Und kannst Du ein paar Worte zur Smartbox sagen? Habe bisher nur Textmode und Binärmode verstanden.
Ich weiß jetzt nicht genau, was Du meinst. Die SB ist ein Busmaster wie auch der Empfänger, weshalb man auch mit der SB nicht einen Rx im Direktanschluss als Terminal konfigurieren kann, wohl aber die anderen Sensoren.
Die SB kennt nun logischerweise, wie ein Sender, die zwei Modi, "Text" (Terminal, 8x21Z, interaktiv mit 4 Tasten) und "Binär" (unidirektional). Allerdings zeigt die Box im Direktanschluss an einen Sensor binär nichts an, nur, wenn sie an einen Tx-Modul angeschlossen wird, also so ein Ding zur Auf-/Nachrüstung. Grund ist, dass eine Binäranzeige immer mehr will, als ein einzelner Sensor sendet, nämlich vor den Daten des eigentlichen Sensors (GAM/GEM, EAM, VARIO, GPS) auch teilweise Daten des Empfängers als Sensor, in einem Header. Das liegt in der "embedded SB" in einem Full-HoTT-Sender vor, und natürlich auch beim Anschluss einer physischen SB an einen Tx-Modul, die TXe kriegen ja ihr Zeugs von einem Rx.
(Ich habe dann den Bodenteil meiner "JTX"-Telemetrie ("JTX Base") seitens HoTT modifiziert, sodass bei Wahl einer SB (also HoTT) als Display auch die grafischen Binärseiten wahlweise verwendet werden können.)


Wurden die Datenstrukturen, außer mit Nullbytes Auffüllen auf die neuen Framelängen geändert?
Das ist jetzt so 'ne Frage. Erstmal: Ja. Nur, der Wechsel von v3 auf v4 war ja kein glatter, da haben Ralf Helbing und ich (Evtl. auch Andere?) so einige Gefühlswechsel durchleben dürfen, weshalb es mir gerade im Vergleich zur v3 direkt schwer fällt, die letztendlichen Änderungen zu benennen. Ich nehme mal an, Deine Frage bezieht sich auf den Unterschied zur Vorversion, also v3, also den offiziell einzigen Schritt v3-->v4? Das Blöde war eben nur, dass es für mich verschiedene Schritte waren, mit Zwischenschritten, da hat die Altzheimer freie Bahn.

In Stichworten:
- Textmodus: Sensoren haben jetzt auch eine dedizierte Adresse wie im Binärmodus, vorher gab es (zum Glück) auch schon eine Adresse, aber EINE Adresse für alle Sensoren. Das ist der Grund, weshalb ein Sender zusätzlich "etc" bzw. eine SB "oldSensor" kennt, damit wird ein alter Sensor (v3) textuell adressiert. Glücklicherweise ist die Sammeladresse, die in V3 verwendet wurde, in v4 nicht mehr in Benutzung, alle dedizierten Adressen unterscheiden sich von der (alten) Sammeladresse.

- Binärmodus: Zunächst kamen die 9 Bytes hinten ran, Byte 35 bis 43, die kann man im Augenblick einfach mit Nullen füllen, solange neue Binärdisplays, die das nutzen, noch nicht da sind (im Sender, in der SB). In den Datenbytes davor blieb alles unverändert. Was sich noch verändert hat, ist der Header, Byte 1 bis 6: Nach 5ms Idle Line (!) kommt wie zuvor Byte1==0x7C, dann Byte2==<binäre SensorID>, Byte3==Alarmbits (wie in v3), Byte4==<SensorID wie im Textmode, 4Bit-Tastencode==0>(!), Byte5,6==Alarm-Inverse-Bits (wie in v3). Ab Byte7 dann die Daten wie in v3, also z.B. Zelle1 beim GAM. -- Der empfangende Binärmodus der SB (nur für Betrieb an einem Tx-Modul gedacht) sieht völlig anders aus als der sendende eines Sensors, - zwischen binärer und textueller SensorID befinden sich 13 Bytes des besagten Rx-Headers, und die beiden Alarm-Inverse-Bytes finden sich nach den 9 neuen Datenbytes und vor dem Endezeichen.

Mannomann, ich werde noch des Hochverrats angeklagt..:)

mha1
20.01.2012, 21:28
Hallo Tom,

danke Dir. Das muss ich erstmal unzippen. Die Framestruktur, in die die Daten eingebettet sind, hatte ich so ungefähr auch beisammen. Der Livelog ist eine super Idee. 9k6 müsste auch in Software zu machen sein. Dann könnte das auch so ein Arduino Mini. Ich glaube mein Projekt für die persönliche idle task steht. Hast Du zufälligen einen JLog1 Openformat log rumliegen?

VG Michael

MeiT
20.01.2012, 22:00
...Hast Du zufälligen einen JLog1 Openformat log rumliegen?

VG Michael

Hi,

interessanter wäre das, was aus dem Jive kommt :D

Damit ich ohne JLog .....

Grüße

Gast_28792
20.01.2012, 22:20
Ist hier etwas OT...:rolleyes:

Ausschnitt:
$1;1;0.0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
$1;1;45.20;0;0;0;15;59;8;16;215;0;0;0;74;6;15;0;0;0;0;0
$1;1;45.30;0;0;0;15;59;8;19;247;0;0;0;74;6;15;0;0;0;0;0
$1;1;45.40;0;0;0;15;59;9;19;244;0;0;0;74;6;15;0;0;0;0;0
$1;1;45.50;0;0;0;15;59;10;22;287;0;0;0;73;6;15;0;0;0;0;0
$1;1;45.60;0;0;0;15;59;10;23;297;0;0;0;73;6;15;0;0;0;0;0
$1;1;45.70;0;0;0;15;59;11;24;315;0;0;0;73;6;15;0;0;0;0;0
$1;1;45.80;0;0;0;15;59;11;25;329;0;0;0;73;6;15;0;0;0;0;0
$1;1;45.90;0;0;0;16;59;12;28;361;0;0;0;79;6;16;0;0;0;0;0
$1;1;46.00;0;0;0;15;59;13;29;372;0;0;0;74;6;16;0;0;0;0;0
$1;1;46.10;0;0;0;15;59;13;30;391;0;0;0;74;6;16;0;0;0;0;0
$1;1;46.20;0;0;0;16;59;14;31;402;0;0;0;79;6;16;0;0;0;0;0
$1;1;46.30;0;0;0;16;59;15;32;422;0;0;0;79;6;16;0;0;0;0;0
$1;1;46.35;0;0;0;16;59;15;33;432;0;0;0;79;6;16;0;0;0;0;0
$1;1;46.50;0;0;0;18;59;16;35;457;0;0;0;89;6;18;0;0;0;0;0
$1;1;46.55;0;0;0;18;59;16;36;468;0;0;0;89;6;18;0;0;0;0;0
$1;1;46.70;0;0;0;18;59;17;38;491;0;0;0;89;6;18;0;0;0;0;0
$1;1;46.75;0;0;0;19;59;18;39;501;0;0;0;94;6;19;0;0;0;0;0
$1;1;46.90;0;0;0;17;59;18;40;524;0;0;0;84;6;19;0;0;0;0;0
$1;1;46.95;0;0;0;35;59;19;42;544;0;0;0;173;6;35;0;0;0;0;0
$1;1;47.10;0;0;0;23;59;20;43;561;0;0;0;113;24;35;0;0;0;0;0
$1;1;47.15;0;0;0;22;59;20;45;578;0;0;0;109;24;35;0;0;0;0;0
$1;1;47.30;60;0;494;26;59;21;46;597;1;0;0;128;24;35;0;0;0;0;0
$1;1;47.35;59;13;493;24;59;21;47;613;1;0;0;118;24;35;0;0;0;0;0
$1;1;47.50;60;0;494;26;59;22;50;644;1;0;0;128;24;35;0;0;0;0;0
$1;1;47.55;60;0;494;26;59;23;51;655;1;0;0;128;24;35;0;0;0;0;0
$1;1;47.70;60;0;494;27;59;23;53;686;1;0;0;133;24;35;0;0;0;0;0
$1;1;47.75;60;0;494;30;59;24;54;698;1;0;0;148;24;35;0;0;0;0;0
$1;1;47.90;60;5;493;28;59;25;56;728;1;0;0;138;24;35;0;0;0;0;0
$1;1;47.95;59;6;494;28;59;25;58;744;1;69;0;138;24;35;0;0;0;0;0
$1;1;48.10;59;0;493;31;59;26;59;769;1;69;73;153;24;35;0;0;0;0;0
$1;1;48.15;60;0;494;33;59;26;61;783;1;69;73;163;24;35;0;0;0;0;0
$1;1;48.30;61;0;493;36;59;27;63;808;1;69;73;177;24;36;0;0;0;0;0
$1;1;48.35;60;0;493;32;59;28;64;824;1;69;73;158;24;36;0;0;0;0;0
$1;1;48.50;60;0;494;35;59;28;66;851;2;69;73;173;24;36;0;0;0;0;0
$1;1;48.55;60;0;493;39;59;29;67;866;2;69;73;192;24;39;0;0;0;0;0
$1;1;48.70;60;28;492;38;59;30;69;891;2;69;73;187;28;39;0;0;0;0;0
$1;1;48.75;60;34;494;35;59;30;70;902;2;69;73;173;34;39;0;0;0;0;0
$1;1;48.90;60;6;493;42;59;31;73;941;2;69;73;207;34;42;0;0;0;0;0
$1;1;48.95;59;0;493;36;59;31;74;951;2;69;73;177;34;42;0;0;0;0;0
$1;1;49.10;60;0;494;38;59;32;76;984;2;69;73;188;34;42;0;0;0;0;0
$1;1;49.15;60;23;494;40;59;33;77;992;2;69;73;198;34;42;0;0;0;0;0
$1;1;49.30;59;6;494;36;59;33;79;1020;2;69;73;178;34;42;0;0;0;0;0
$1;1;49.35;60;0;494;41;59;34;80;1034;2;69;73;202;34;42;0;0;0;0;0
$1;1;49.50;60;0;493;39;59;35;82;1062;3;69;73;192;34;42;0;0;0;0;0
$1;1;49.55;60;0;494;43;59;35;83;1072;3;69;73;212;34;43;0;0;0;0;0
$1;1;49.60;60;5;492;48;59;36;86;1104;3;69;73;236;34;48;0;0;0;0;0
$1;1;49.70;60;0;493;44;59;36;87;1117;3;69;73;217;34;48;0;0;0;0;0
$1;1;49.80;60;0;494;49;59;37;89;1151;3;69;73;242;34;49;0;0;0;0;0
$1;1;49.90;60;0;492;49;59;37;90;1166;3;69;73;241;34;49;0;0;0;0;0
$1;1;50.00;61;0;494;51;59;38;92;1190;3;69;73;252;34;51;0;0;0;0;0
$1;1;50.10;60;0;493;46;59;39;93;1201;3;69;73;227;34;51;0;0;0;0;0
$1;1;50.20;60;9;493;48;59;40;95;1219;4;69;73;237;34;51;0;0;0;0;0
$1;1;50.30;60;0;494;48;59;40;96;1234;4;69;73;237;34;51;0;0;0;0;0
$1;1;50.40;61;23;491;49;59;41;98;1265;4;69;73;241;34;51;0;0;0;0;0
$1;1;50.50;60;0;491;49;59;41;98;1265;4;69;73;241;34;51;0;0;0;0;0
$1;1;50.60;60;0;492;64;59;42;100;1286;4;69;73;315;34;64;0;0;0;0;0
$1;1;50.70;60;0;492;59;59;42;103;1322;4;69;73;290;34;64;0;0;0;0;0
$1;1;50.80;60;0;493;61;59;43;104;1335;4;69;73;301;34;64;0;0;0;0;0
$1;1;50.90;61;26;493;58;59;44;106;1367;5;69;73;286;34;64;0;0;0;0;0
$1;1;51.00;60;25;493;60;59;45;107;1384;5;69;73;296;34;64;0;0;0;0;0
$1;1;51.10;61;28;491;60;59;45;109;1408;5;69;73;295;34;64;0;0;0;0;0
$1;1;51.20;60;6;491;62;59;46;110;1423;5;69;73;305;34;64;0;0;0;0;0
$1;1;51.30;60;0;492;62;59;46;113;1451;5;69;73;305;34;64;0;0;0;0;0
$1;1;51.40;60;21;493;58;59;47;113;1459;5;69;73;286;34;64;0;0;0;0;0
$1;1;51.50;60;9;492;63;59;47;115;1484;6;69;73;310;34;64;0;0;0;0;0
$1;1;51.60;60;20;492;65;59;48;116;1498;6;69;73;320;34;65;0;0;0;0;0
$1;1;51.70;59;0;492;66;59;49;118;1518;6;69;73;325;34;66;0;0;0;0;0
$1;1;51.80;59;29;492;61;59;49;119;1532;6;69;73;300;34;66;0;0;0;0;0
$1;1;51.90;60;26;491;63;59;50;120;1544;6;69;73;309;34;66;0;0;0;0;0
$1;1;52.00;60;5;492;63;59;50;121;1562;7;69;73;310;34;66;0;0;0;0;0
$1;1;52.10;60;0;492;70;59;51;123;1581;7;69;73;345;34;70;0;0;0;0;0
$1;1;52.20;60;0;492;66;59;52;124;1596;7;69;73;325;34;70;0;0;0;0;0
$1;1;52.30;60;61;491;77;59;52;126;1622;7;69;73;378;61;77;0;0;0;0;0

$1;1;Sekunden.sekunden;Ubec*10;Ibec*10;Ubat*10;Imot*10;Gas;PWM;RPMuni/10;RPMmotor/10;mAh;tempFET°C;tempBEC°C;PowerWatt;IbecMax*10;ImotMax*10;mAh-Alarm(0|1);Ubat-Alarm(0|1);tempFET-Alarm(0|1);UbecDrop-Alarm(0|1);0 <-- Checksumme immer Null, ist eigentlich Männerulk im Logfile. (Im "JTX" sind die Pakete mit CRC, weil'se durch die Luft gehen und das modifizierte JIVE-Pakete sind, die eh CRC haben.)

Files finden sich auf j-log.net im JLog1-Bereich.

Falls Du nicht fit genug sein solltest seitens Software-UART, denke dran, Du brauchst 2 serielle Interfaces, Nummer 1 nur 9k6 in (OF), Nummer 2 19k2 in/out (HoTT, 1-Wire, Rx/Tx parallel schalten). Der kleine Arduino-Kram hat einen 168 oder 328 drauf, der hat nur einen Hardware-UART.

Tom

MeiT
20.01.2012, 22:25
...
Falls Du nicht fit genug sein solltest seitens Software-UART, denke dran, Du brauchst 2 serielle Interfaces,..

Hi dl7uae,

Bin HardWärker.

also lieber Hardware UART mit INTs als Software ;)

Grüße

Gast_28792
20.01.2012, 22:45
Jo.., dann einen 644p, wenn's ATMEL sein soll.

Auf der 1-Wire-Seite muss man eh ständig eingreifen, also Tx/Rx on/off und so.

Wenn man die Arduino-IDE benutzt (reine Geschmacksfrage;)), hat man ja automatisch C++ an der Backe und kann die Lib "NewSoftSerial" nehmen. Die ist mit 16MHz immer gut für 38k4, oft auch noch bis 57k6. Damit dann aber rein asynchron-seriell, also sozusagen nur in "Missionarsstellung", denn ein Eingreifen hier für 1-Wire könnte etwas mehr Kopfschmerzen machen, vor allem auch das Idle Line.

-----
Mist, ich hatte schon wieder nur mit halbem Auge gelesen, Du hattest Dich ja schon auf einen Software-UART festgelegt. Mit C++ und am besten gleich mit der Arduino-IDE (wg. der Lib-Struktur) kannst Du damit tatsächlich mit einem Mini oder Nano ganz lässig die 9k6 lesen auf einem GIO-Pin. Auf dem UART machste dann den HoTT-Kram.

-----

interessanter wäre das, was aus dem Jive kommt

Damit ich ohne JLog .....
Nö.., sorry.:D
Ich kann Dir dazu aber auch gleich sagen, dass Dich der Datensatzaufbau auch nicht glücklich machen würde, weil man eine ziemlich verzwackte State Machine drum rum braucht, um das Geseier des JIVE für ein Log nutzen zu können. Die Härte ist aber das Data Processing für den Strom aus dem JIVE, unbearbeitet kann man damit nur seine Lottoscheine ausfüllen.

MeiT
20.01.2012, 23:00
Hi,

[privat] ich arbeite mit C und AVR....

Grüße

Gast_28792
20.01.2012, 23:10
Jo.., ist mir symphatisch.:) JLog2 ist ja auch AVR, ein 644p, und alles Barfuß-C, um den Platzbedarf besser "tweaken" zu können.

Teilweise nehme ich aber auch einen Arduino und ärgere mich permanent über den JAVA-Überbau der IDE, wenn ich Libs der Community nachnutzen will.

Aber auch andere Mütter haben schöne Töchter, z.B. ARM mit der Cortex-Familie, da kann dann, je nach Taktfrequenz, richtig die Luzi abgehen. Na ja, die Welt ist bunt, Infineon soll auch nicht verschwiegen werden.., und natürlich auch nicht die Ritter der PICs. Meist klebt man ja 'ne Weile an was fest, eben nach der alten Bauernregel, "Wat der Bur net kennt...".

MeiT
20.01.2012, 23:15
Jo.., ist mir symphatisch.:) JLog2 ist ja auch AVR, ein 644p, und alles Barfuß-C, um den Platzbedarf besser "tweaken" zu können.

Teilweise nehme ich aber auch einen Arduino und ärgere mich permanent über den JAVA-Überbau der IDE, wenn ich Libs der Community nachnutzen will.

Aber auch andere Mütter haben schöne Töchter, z.B. ARM mit der Cortex-Familie, da kann dann, je nach Taktfrequenz, richtig die Luzi abgehen. Na ja, die Welt ist bunt, Infineon soll auch nicht verschwiegen werden.., und natürlich auch nicht die Ritter der PICs. Meist klebt man ja 'ne Weile an was fest, eben nach der alten Bauernregel, "Wat der Bur net kennt...".

Hi,

eigentlich habe ich bisher nur 1280er verwendet, weil die mir "geschenkt" wurden ;)

Aber wegen dem Platzbedarf muss ich nun mit einen 168er auskommen :(

644 ist ne Hausnummer, aber der Pinbedarf.....

Grüße

mha1
21.01.2012, 10:29
Hallo Tom,

danke Dir. Peinlich, ich dachte Openformat wäre wieder ein eigenes Format. Sind ja die Logs selbst. Davon habe ca. 150 aus dem TDR. Also alles da. Und ja, ich hätte den Jlog Datenstrom mit NewSerialSoft eingelesen und den Telemetrie Output per HW UART an den Empfänger geschickt. Zwei HW UARTS wären zwar schön, aber ein Arduini Mini liegt gerade rum.

Zum Zusammenschalten RX und TX: sollte man das nicht durch eine Diode entkoppeln? Hätte man sonst nicht sein Echo auf der Leitung? Braucht die one wire Leitung zum Empfänger einen pullup?

763329

Gast_28792
21.01.2012, 12:19
Zum Zusammenschalten RX und TX: sollte man das nicht durch eine Diode entkoppeln? Hätte man sonst nicht sein Echo auf der Leitung? Braucht die one wire Leitung zum Empfänger einen pullup?
Nee, einfach zusammenknallen, Du hast ja immer nur einen aktiv, Tx oder Rx. Den Rx clearst Du, wenn Du gesendest hast und auf Rx umschaltest. Sprich, das ist ja half duplex. - Einen Pullup brauchst Du nicht, das Zuschalten (sind ja nur 35..50k im AVR) stört aber auch nicht.

Ja, OpenFormat ist das, was LogView dann als Device Input frisst. Der OF-Livestream des Loggers unterscheidet sich leicht zu dem, der aufgezeichnet wird. Das liegt am LogStop: Maxwerte für die Aufzeichnung werden nicht aktualisiert, wenn gerade LogStop Condition vorliegt, also nicht aufgezeichnet wird. Minwerte gibt es nur in der Telemetrie, nicht im LiveStream. Letzteres hat als Grund, damit der Aufbau des LiveStreams identisch zum OF der Aufzeichnung ist. Der OF-LiveStream war ja mehr für LV auf der Werkbank (via USB) denn für Telemetriezwecke gedacht.

Tom

MeiT
21.01.2012, 14:03
...
Ach so, und wenn ich schon mal dabei bin: Das ist hier das übliche Idle-Line-Protokoll, um auf einem 1-Wire-Bus kollisionsfrei mit n Slaves arbeiten zu können. Ich zitiere mich mal selbst:.

Hi,

bin gerade dabei das Idle-Line einzubauen und habe dazu ein Experiment mit dem original GAM gemacht.

AVR direkt mit dem GAM verbunden ohne Empfänger.

- AVR sendet 0x80, 0x8D, also einen "Request" zum GAM.
- GAM antwortet mit seinen Daten.

Nun wollte ich das Idle-Line vom GAM testen.

- AVR sendet 0x80, 0x8D, 0x65, und noch ein paar Bytes im 2ms Raster.
- GAM antwortet trotzdem mit Daten bzw. es entsteht Datenmüll wegen Kollision.


Also habe ich mein programmiertes EAM zusammen mit GAM an den Empfänger angeschlossen.
In der Fernsteuerung nur EAM aktiv. GAM deaktiviert.

- mein EAM antwortet schön auf den Request und es kommen aktualisierte Daten in der Funke an.
- GAM macht nix, hat ja auch kein Request
(damit ich sehe dass was ankommt, lasse ich einfach die Temperatur hoch und runter laufen.


Nun habe ich in die EAM Daten irgendwo 0x80 und 0x8D hintereinander eingebaut.

- mein EAM antwortet auf den Request und sobald die 0x80 und 0x8D in den Daten von meinem EAM auftauchen, fängt das GAM an dazwischen zu reden.
- es entsteht Datenmüll. Es kommt auch nix mehr an der Funke an.

Ich habe schon verschiedene Delays probiert, von 1ms bis 5ms. Ändert nix, GAM quatscht dazwischen.

Hab ich was übersehen?

Wenn das GAM 0x80 und 0x8D empfängt, sollte es doch nix antworten, wenn innerhalb von 5ms weitere Byts empfangen wurden?

In meinem Test kommen im Abstand von 2ms weitere Daten.

Grüße

Gast_28792
21.01.2012, 14:58
Da habe ich ja was ausgelöst..

Na ja, ich sage mal so: Das Idle Line war eine Forderung von mir, die auch allen 3rd-Party-Implementatoren zuging in Form einer v4-Protokollbeschreibung, die ich fertigte. Ob das auch straight in der FW der Graupner-Sensoren landete, entzieht sich meiner Kenntnis, habe ich auch nicht explizit getestet.:rolleyes:

Das muss Ralf Helbing mal mit der Entwicklung checken.
Der Ablauf war der, dass ich in Vorbereitung mehrerer paralleler Sensoren bereits in der v3 ein Idle Line vorschlug und in JLog2 einbaute. Die Protokollbeschreibung, die es in anderer Form auch immer von Graupner gab, machte ich später, in einer Zwischenphase der Version, die später "v4" getauft wurde. Erst hier kam das Idle Line beschreibungstechnisch zu Papier. Möglich, dass es auf dem Weg zur Entwicklung stecken blieb, es war bei denen ohnehin sehr stressig zum fraglichen Zeitpunkt, weil die mc32 in den Geburtswehen lag und der gleichzeitige Protokollwechsel, v4 auch noch im Debug, hier logistische Kopfschmerzen on top bereitete. Es war schon fast ein Wunderding, dass das alles noch so 100%ig vor Weihnachten aufging, da kann das Idle Line schlichtweg übersehen worden sein.

Ansonsten kann man hoffen, dass der Zufall nicht eintritt, was ja wohl bisher auch nicht der Fall war, möglicherweise aufgrund der Daten nicht eintreten kann. Die 3rd-Party-Sensoren nehmen ja dieselben Datenrahmen, GEM/GAM, EAM, VARIO, GPS, wären also vom "glücklichen Zufall" mit abgedeckt. Du hattest es testweise provoziert, und bingo..

Trotzdem muss das über alle Busteilnehmer implementiert sein, sonst wäre es ein tickendes Bömbchen, was vielleicht erst später, mit geänderten binären Displays (steht ja an) hoch geht.
Lassen wir es mal bitte vorerst so stehen, das gibt Gelegenheit, es Graupner-intern zu überprüfen.

Tom

mha1
21.01.2012, 16:13
Hallo Tom,

mit welcher Frequenz sendest Du die Openformat Daten?

VG Michael

Gast_28792
21.01.2012, 16:18
Alle 100ms ein Datensatz. Der Master of Disaster ist der JIVE, seine Pakete und seine Timestamps in diesen. Also, schneller als 100ms wird es nicht.

mha1
21.01.2012, 17:24
Hallo Tom,

gut, das packt auch der 8Mhz 328.

VG Michael

PS: Soweit ok?



#define HOTT_VARIO_PACKET_ID 0x80
#define HOTT_VARIO_PACKET_ID 0x89
#define HOTT_GPS_PACKET_ID 0x8A
#define HOTT_GENERAL_PACKET_ID 0x8D // General_Air = General_Engine
#define HOTT_ELECTRIC_AIR_PACKET_ID 0x8E

typedef struct
{
uint8_t StartByte; // 0x7C
uint8_t Packet_ID; // HOTT_ELECTRIC_AIR_PACKET_ID
uint8_t WarnBeep; // Anzahl der Töne 0..36
uint8_t VoltageCell1; // 208 = 4,16V (Voltage * 50 = Wert)
uint8_t VoltageCell2; // 209 = 4,18V
uint8_t VoltageCell3; //
uint8_t VoltageCell4; //
uint8_t VoltageCell5; //
uint8_t VoltageCell6; //
uint8_t VoltageCell7; //
uint8_t VoltageCell8; //
uint8_t VoltageCell9; //
uint8_t VoltageCell10; //
uint8_t VoltageCell11; //
uint8_t VoltageCell12; //
uint8_t VoltageCell13; //
uint8_t VoltageCell14; //
uint16_t Battery1; // 51 = 5,1V
uint16_t Battery2; // 51 = 5,1V
uint8_t Temperature1; // 44 = 24°C, 0 = -20°C
uint8_t Temperature2; // 44 = 24°C, 0 = -20°C
int16_t Altitude; //
uint16_t Current; // 1 = 0.1A
uint16_t InputVoltage; // 66 = 6,6V
uint16_t Capacity; // 1 = 10mAh
uint16_t m_sec; // 30000 = 0
uint16_t m_3sec; // 120 = 0
uint8_t NullByte1; // 0x00
uint8_t NullByte2; // 0x00
uint8_t NullByte3; // 0x00
uint8_t NullByte4; // 0x00
uint8_t NullByte5; // 0x00
uint8_t NullByte6; // 0x00
uint8_t NullByte7; // 0x00
uint8_t NullByte8; // 0x00
uint8_t EndByte; // 0x7D
uint8_t CRC; // CRC
} ElectricAirPacket_t; // Electric Air Modul Module

Gast_28792
21.01.2012, 17:41
Schick' mir mal 'ne Email, bitte. Dauert einen Augenblick, kämpfe hier seit inzw. 16h mit einem FW-Upgrade bei 'nem Kunden.., muss das Mailtool immer schließen, weil meine Kiste sonst zu wenig RAM hat. Für den MAC als parallele Mail-Alternative ist kein Platz auf dem Tisch, liegt zuviel MCU-Kram rum wie Kraut und Rüben:), die remote VMs haben kein Mailtool drauf.

-----

Zu dem Idle Line noch mal: Zwischenzeitlich waren wir mal wieder zurück bei 9 Datenbits, das hätte Idle Line erübrigt, die 9 Bits wurden dann aber wieder fallen gelassen, weil man sich dadurch zuviel verbauen kann bei zukünftigen Gerätschaften, die der 9 Bits nicht mächtig sind. Kann sein, dass es dadurch bei den Graupner-Sensoren übersehen wurde. -- Es scheint aber z.Z. tatsächlich kein praktisches Problem darstellen zu können, dann also auch nicht mit Nicht-Graupner-Sensoren, denn evtl. Kollisionen machen sich ja nur an den definierten Datenrahmen (den Datenklassen darin) der 4 bzw. 5 Sensoren fest, die auch Graupner-fremde Sensoren verwenden müssen.

Gast_28792
21.01.2012, 22:20
Hab' Deine Email-Adresse aus alten JLog1-Zeiten gefunden, Micha, und Dir was geschickt.

Bei dem da oben fehlt was im Header.

MeiT
25.01.2012, 19:52
Hi,

hab gerade Idle-line eingebaut.
Das ganze mit einem selbstgebauten AVR "Request_Sender" getestet.
Alles gut.

Dann aM lebenden System getestet (MX-20 mit GR-16).

Dabei bin ich fast verzweifelt....

- normal: request alle 200ms
- jeder Sensor wird zweimal abgefragt
- auch wenn zwei Sensoren angeschlossen sind

Sonderfall:

- ist ein Sensor nicht angeschlossen, aber in der Funke eingstellt, dann kommen bis zu 4 Request an den "nicht angeschlossenen" Sensor, aber nur ein einziger Request an den tatsächlich vorhandenen Sensor.

- schaltet man 4 Sensoren ein, Vario, GPS, GAM obwohl nur EAM angeschlossen ist, dann kommt der Request für EAM so selten, dass ich glaubte er kommt garnicht. Also 12 mal Ghostrequest und 1 mal EAM Request.

- nur EAM angeschlossen und in der Funke eingeschaltet,
- danach den "nicht vorhandenen GAM" in der Funke aktiviert und nun wird nur noch GAM Request gesendet. (nach einigen Minuten wird wieder zwischendurch ein EAM Request gesendet)

PS: Das sind Infos für DIY Entwickler, dass die Request nicht unbedingt regelmässig kommen, wenn ein Sensor nicht angeschlossen ist.

Grüße

MeiT
25.01.2012, 20:21
...
- nur EAM angeschlossen und in der Funke eingeschaltet,
- danach den "nicht vorhandenen GAM" in der Funke aktiviert und nun wird nur noch GAM Request gesendet. (nach einigen Minuten wird wieder zwischendurch ein EAM Request gesendet)...

OKAY,

ist kein DIY Problem.

Funktioniert genauso anders rum.

Ist also ein HOTT Problem oder auch kein Problem.

(Ist in der Funke ein Sensor eingestellt der nicht angeschlossen ist, funktioniert irgendwas nicht richtig.)
An anderen Stelle schon festgestellt: Warnungen werden nicht korrekt oder garnicht ausgegeben, wenn ein Sensor gewählt aber nicht angeschlossen ist.

Grüße

Gast_28792
25.01.2012, 21:14
Ja, die Abfragesequenzen sind immer noch schräg, da muss man noch mal ran.

Graupner Information
25.01.2012, 22:34
Klar, wenn der Sensor nicht angeschlossen ist, versucht man gültige Daten zu bekommen und das geht nicht.
Also keine nicht vorhandenen Sensoren wählen!

mha1
27.01.2012, 11:46
Hallo,

hätte noch zwei Fragen:
- was wird mit dem im Bild invertierten Teil der Darstellung (100 invertiert) dargestellt?
- wie werden die Batteriefüllstandsanzeigen (AKK1, AKK2 links) und in die graphischen Darstellung auf den anderen Seiten skaliert? Welchem Wert entspricht "voll"?

VG Michael




http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAM-2.JPG

Gast_28792
27.01.2012, 12:21
Die "100" ist die Linkqualität, das ist im Header, den ein Binärdisplay in einem Sender oder einer SmartBox sehen will.
Guck mal in das PDF.;)

Die Füllstandsanzeigen sind leider nicht relativ zu bedienen, sie gehen von einer Maximalspannung aus, ich glaube, irgendwas um 14S.

landebahnpflug
27.01.2012, 14:42
welches PDF ?

Gast_28792
28.01.2012, 21:58
Mit "landebahnpflug" bin ich in Kommunikation, die Frage ist inzwischen gegenstandlos.

-----

Ich presche mal vor, Ehre, wem Ehre gebührt. Micha (mha1) hat einen HoTT-Telemetriekonverter für den OpenFormat-Livestream des JLog1 geschrieben, der nun läuft, wie er mir mitteilte. Es gibt noch ein paar Details zu diskutieren.
Außerdem fiel mir heute mit Schrecken ein, dass JLog1 dafür einer "Spezial-Firmware" bedarf, marginal angepasst an den Zweck: Grund ist, dass der einzige Pin, der mit JLog1 z.V. steht dafür, ja automatisch die Nutzung von OpenFormat-Livestream auf Alarm Line umschaltet (Schaltausgang), sobald ein Alarm konfiguriert wird. Die Alarme sollten aber unbedingt konfiguriert und im Livestream einzeln gemeldet werden, um sie via Michas Interface an HoTT weiter zu reichen.

Ich habe Micha eine Plattform vorgeschlagen, falls er beabsichtigen sollte, das als Bauanleitung zur Nachnutzung bereit zu stellen. Ein Thread wie hier wäre nicht so gut geeignet, da habe ich Erfahrungen, es würde schnell unübersichtlich werden. Habe daher ein Board für Entwicklungen der Community für JLog bei JLF eingerichtet, wo Micha sich im Unterforum "JLog1" austoben könnte, wenn er mag. Übersichtlicher kann er es halten durch Mod-Rechte dort. Also einen unendlich editierbaren "Deployment-Thread" plus beliebige Threads zur Diskussion des Ganzen, Letzteres ginge natürlich auch hier. -- Jedenfalls wäre das so einfacher, als wenn er auf j-log.net in einem entsprechenden Chapter rumeditieren müsste, glaube ich.

Das Ob und Wie muss man aber Micha überlassen, schließlich macht so was auch Arbeit, und wäre nun mal die blanke "Heldennummer" im "Dienst an der Community". :)

Tom

Gast_28792
02.02.2012, 22:29
Micha hat's getan, da (http://62.153.249.80/jlog/forum/viewtopic.php?f=17&t=157) isses.

flangel
23.02.2012, 09:46
Moin, moin,

ich finde die neue HOTT Technik und die neue Senderreihe auch einfach toll. Klasse Graupner!! Einen eigenen Sensor habe ich, nach dem Kauf der mx-12 hott v11, nun auch gebaut.
Das Wichtigste ist für mich die Spannung des Akkus, nebenbei liefert er aber auch die einzelnen Zell-Spannungen.
Als MC dient ein kleiner Attiny13, als Spannungsteiler 6 Widerstände und 1 Widerstand für den Schutz der Seriellen Verbindung, mehr wird nicht gebraucht. Kosten insgesamt max. 2,00 Euro.
Die Software ist rein in Assembler. Die fehlende Serielle Schnittstelle des Attiny13 wird durch Software ersetzt. Die Kalibrierung der Spannungswandlung macht er selber wenn die 'Kali' Pins kurz überbrückt werden. Die Widerstände der Spannungsteiler müssen dabei nur ein Verhältnis von ca. 1:12 (460 Ohm : 5.6 kOhm) haben, da ich mit der internen Ref.Spannung arbeite. Mein Sensor arbeitet hier auf dem Prüftisch hervorragend.

Gruß Frank

jochene
23.02.2012, 10:07
Hallo Frank,

Tolle Arbeit!

Gibt es das vielleicht auch als Download?

Wäre super.

Danke

Gruß
jochen




Moin, moin,

ich finde die neue HOTT Technik und die neue Senderreihe auch einfach toll. Klasse Graupner!! Einen eigenen Sensor habe ich, nach dem Kauf der mx-12 hott v11, nun auch gebaut.
Das Wichtigste ist für mich die Spannung des Akkus, nebenbei liefert er aber auch die einzelnen Zell-Spannungen.
Als MC dient ein kleiner Attiny13, als Spannungsteiler 6 Widerstände und 1 Widerstand für den Schutz der Seriellen Verbindung, mehr wird nicht gebraucht. Kosten insgesamt max. 2,00 Euro.
Die Software ist rein in Assembler. Die fehlende Serielle Schnittstelle des Attiny13 wird durch Software ersetzt. Die Kalibrierung der Spannungswandlung macht er selber wenn die 'Kali' Pins kurz überbrückt werden. Die Widerstände der Spannungsteiler müssen dabei nur ein Verhältnis von ca. 1:12 (460 Ohm : 5.6 kOhm) haben, da ich mit der internen Ref.Spannung arbeite. Mein Sensor arbeitet hier auf dem Prüftisch hervorragend.

Gruß Frank

cgiesen
23.02.2012, 10:23
Das und nur das ist das was ich brauche.
Mehr nicht!
Und das als SMD ist dann auch nur noch ein Fliegenschiss....

Ich bin sehr an einem Nachbau interessiert.
Lieber aber an ein paar fertigen Teilen.
Dann brauche ich mir den Kram zum Programieren des Käfers nicht kaufen....

Edit:
<Spaß>
Ich höre schon die Fragen: "Auf wieviele Stellen hinter dem Komma ist der Sensor denn genau?"
</Spaß>

Aber im Ernst. Ich sehe im Standard wunderbar die Spannung am Empfänger. Der Regler hält diese aber genau. Ist die Spannung am Regler Eingang zu niedrig gibts nur noch ein AUS.
Hier hätte ich endlich die echte Spannung und das für kleines Geld und ohne Schnickschnack

jochene
23.02.2012, 10:41
Hallo,


Das und nur das ist das was ich brauche.
Mehr nicht!
Und das als SMD ist dann auch nur noch ein Fliegenschiss....

Ich bin sehr an einem Nachbau interessiert.
...........


da stimme ich Dir zu.

in SMD und dann noch die Möglichkeit Erweiterungen aufzustecken.
- 3S zusätzlich oder mehr
- Temperatur zusätzlich
- Drehzahl zusätzlich

Man steckt sich das an Funktionen zusammen, was man benötigt.

Vielleicht wäre das eine Möglichkeit für die Gewerblichen.
Die "Hobbyisten" wie ich sind damit vielleicht doch überfordert.

Gruß
Jochen

cgiesen
23.02.2012, 10:45
Hallo,
in SMD und dann noch die Möglichkeit Erweiterungen aufzustecken.
- 3S zusätzlich oder mehr
- Temperatur zusätzlich
- Drehzahl zusätzlich


Du willst mir schon wieder zu viel!
Das können die Teile von Graupner doch schon!
Und wenn ich 6S brauche, dann ist der Flieger auch so groß, das die Teile dann locker passen.

Außerdem macht das die Sache wieder teurer!
Das Einzige währe vielleicht ein USB für Updates! Aber das denke ich wird nicht unbedingt nötig sein!

jochene
23.02.2012, 11:10
Hallo Carsten,


Du willst mir schon wieder zu viel!
Das können die Teile von Graupner doch schon!
Und wenn ich 6S brauche, dann ist der Flieger auch so groß, das die Teile dann locker passen.

Außerdem macht das die Sache wieder teurer!
Das Einzige währe vielleicht ein USB für Updates! Aber das denke ich wird nicht unbedingt nötig sein!

eigentlich hast Du recht, aber:

Bei einem 450er Heli möchte ich die Reglertemp und den 3s-Akku
Bei einem anderen 450er vielleicht die Motortemp und den 3s-Akku
Bei einem anderen 450er vielleicht ein GPS und ein 3s-Akku

Die "großen" Graupnermodule mit der Vielzahl der Möglichkeiten ist nicht immer notwendig.
Bei einem 12s Heli ist vielleicht nur die Einzelzellenspannung und die Reglertemp für einen Piloten wichtig.
Auch wenn Platz ist, sind alle Funktionen nicht immer wichtig.

Mit solchen "Steckmodulen" kann ich mir das zusammenstecken, was ich für ein Modell wichtig empfinde.
Wenn dann für bestimmte Einstellarbeiten eine neue Funktion notwendig wird (vielleicht auch nur einmalig z.B. ist der Kaffee schon fertig - im Moment fällt mir kein Beispiel ein) wird ein entsprechendes Modul aufgesteckt.

Aber wie gesagt, jeder hat da andere Vorstellungen und Wünsch.

Ich persönlich kann nur nachbauen, aber auf keinen Fall selber entwickeln - habe nur seltsame und krumme Ideen.

Gruß
jochen

flangel
23.02.2012, 14:39
Moin, moin

es freut mich, wenn meine Arbeit Interesse gefunden hat. Klar werde ich meinen Aufbau und Software Interessenten zur Verfügung stellen und beim Nachbau helfen.
Das Layout und die Software gehören aber mir, eine Gewerbliche Nutzung oder dergleichen darf nicht geschehen. Irgendeine Haftung oder dergleichen kann ich aber auch nicht übernehmen...

So nun zur Spannungsmessung folgendes:
Ich benutze die interne 1.1V Refenrenzspannung, es wird bei 3 Lipo Zellen ein Ergebnis von max. 12.6 V erwartet. Dafür benötige ich einen Spannungsteiler von ca. 1:12; 330 Ohm : 5.6 kOhm bis 1 kOhm : 12 kOhm (habe ich aber noch nicht getestet). Eingesetzt habe ich 460 Ohm : 5.6 kOhm.
Der ADC Wandler des Attiny13 hat eine Auflösung von 10Bit; 0 ... 1024. Bei 12.6V liefert er mir also einen Wert von ca. 900. Die Wandlung ist linear, d.h. ich brauche noch einen Multiplikant a für die Gleichung:
a*x = y.
a ... Multiplikant
x ... Messwert
y ... Gesamt Lipospannung

Für die Ermittlung von a wird die Kalibrierung benötigt.
Ablauf der Kalibrierung:
1. An den Balancer Anschluss einen vollgeladenen 3 Zellen Lipo Akku anschliessen (dieser hat ja normalerweise 12.6 V)
2. Den beiden Kali Pinne kurz mit einander verbinden
3. Intern wird nun die Spannung gemessen und der Multiplikant a auf 0 gesetzt
4. a um 1 erhöhen ( gerechnet wird immer nur in 2Byte integer , kein float)
5. Messwert mit a multiplizieren
6. Ergebnis kleiner als 12.6V ? ja --> weiter bei 4
7. fertig --> neuen Multiplikant im EEPROM abspeichern

Das wars, so habe ich meine Messung kalibriert, es ist egal welche Widerstandspärchen angeschlossen sind und welche genauen Werte sie haben.
Diese Kalibrierung kann immer wiederholen, muss man aber nicht!

Bis bald zur Fortsetzung

Gruß Frank

jochene
23.02.2012, 14:50
Hallo Frank,

das mit dem "gehören und der "gewerblichen Nutzung" versteht sich von selbst.

Hab mal mit einem Bekannten dieses:

http://www.modellheliflieger.de

unter "Projekte" gemacht und veröffentlicht.

Da gelten wohl die selben Regeln bzw. sind ein wenig erweitert.

Ich selber habe keine Ahnung von "Elektriktick".
Bei diesem Projekt habe ich nur das Platinenlayout, Gehäuse erstellt und die SMD's gegrillt.
Software und Schaltung hat Wilhelm Krug entwickelt.

Gruß
jochen

Larx
23.02.2012, 16:56
Ich schließe mich an die Liste der Interessenten an! Und ich werde sicherlich niemanden haftbar machen, wenn ich mich beim Nachbau verlöte :D. Schön wären übrigens nicht nur Spannungs-, sondern insbesondere Strom- und darauf aufbauend Kapazitätsmessungen (mit mehr als 40A). Das fehlt mir im aktuellen Graupner-Angebot am meisten - ich brauche keine zwei Temperaturen, Vario und Drehzahlen in jedem Flieger, Treibstoffdurchflussmessungen, sondern einfach nur Spannung und Strom.

MeiT
23.02.2012, 17:46
....Schön wären übrigens nicht nur Spannungs-, sondern insbesondere Strom- und darauf aufbauend Kapazitätsmessungen ....

Hi,

ich wundere mich schon wie überhaupt das HOTT Protkoll in den tiny13 passt ;)

Hab schon Platzprobleme auf einen mega168 :D

Grüße

Elektro-Andi
23.02.2012, 22:53
Hallo Frank,
mit deinem Attiny das ist eine tolle Sache.
Die automatische Kalibrierung ist auch eine gute Idee.

Du hast nur 1 Widerstand in der Datenleitung, verwendest du nur TX ? ,wie wartest du dann auf die Anfrage vom Empfänger ?

Dein Sensor wäre ideal aus "Regleraufsatz", +/- fest mit dem Regler verdrahtet, misst nur die Hauptspannung und ev. mit einem LM35 einfach die Temperatur.
Wenn du keine Einzelzellen misst kannst du auch mit der Hauptspannung höher gehen -z.B. 30,0V / bis 6S.
Einzelzellenmessung im Flug wird meiner Meinung nach eh überbewertet und man muss jedes mal den Balancerstecker anschliessen.

Unterspannungsalarm wäre noch wichtig aber bei dem Attiny wohl schlecht manuell einstellbar. Ev. auch automatisch ?

Bei mir läuft gerade ein Arduino an Hott mit Spannung, Temperatur + Alarme. Das Programm ist einfach gehalten so dass jeder es verändern kann. Werde ich demnächst hier einstellen.
Grüße
Andi

vw-bussmann
23.02.2012, 23:17
Du willst mir schon wieder zu viel!
Das können die Teile von Graupner doch schon!
Und wenn ich 6S brauche, dann ist der Flieger auch so groß, das die Teile dann locker passen.

Außerdem macht das die Sache wieder teurer!
Das Einzige währe vielleicht ein USB für Updates! Aber das denke ich wird nicht unbedingt nötig sein!

Ein Rex500 oder Logo400 hat auch 6s und kaum Platz.

Das ist eigentlich das was "alle" Wollen. Ein Kabel mit nem IC "Pickel" drinn mit dem man einfach am Balancer die Einzelzellenspannung am Sender hat.

flangel
24.02.2012, 09:43
Moin, moin ...

Hallo Andi,

der kleine Attiny13 hat keine serielle Schnittstelle, sie wird rein Softwaremäßig über einen normalen IO Port simuliert. Diesen Port kann ich umschalten. Auf Input geschaltet warte ich auf das 0x80 0x8D des Recievers, schalte ihn um auf Output, sende die Antwort, schalte wieder um auf Input und warte. So will es auch Graupner. Das Sende Protokoll ist HOTT V4.
Diese softwaremäßige Schnittstelle ist auch noch der Schwachpunkt und muss wohl noch mehr getestet werden. Die Baudrate von 19200 lässt keine großen Toleranzen zu. An meinem PC und auch an meinem HOTT Empfänger arbeitet der Attiny13 Sender ohne Ausfälle (getestet habe ich dies mit 2 verschiedenen Attiny13), aber es fehlen hier noch weitere Tests um die optimale Anzahl der nop's ;) einzustellen.

Die Spannungsteiler Widerstände für die Zellen 1 und 2 kannst du auch weglassen und keine Messung für die Zellen durchführen. Ich halte sie auch nicht für wichtig und habe im Flug auch nie darauf geachtet ;).

Mal sehen, vielleicht schliesse ich stattdessen dafür auch einen Temperaturgeber an.

Auf dem Graupner Sender v11 werden folgende Ausgaben gemacht:
1. aktuelle Antriebsspannung
2. Akku 1 = aktuelle Antriebsspannung (die selbe Angabe wie unter 1.)
3. Akku 2 = minimale Antriebsspannung, bei Unterschreitung erfolgt Alarm

Bis jetzt habe ich die min. Antriebsspannung fest auf 10.5V eingestellt. Wird diese für mehr als ca. 1 sec unterschritten, übermittle ich dem Reciever einen Unterspannungsalarm. Diesen Wert werde ich aber noch manuell einstellbar machen.

Das Einstellen der minimalen Antriebsspannung soll wie folgt vorgenommen werden:
1. Balancer Stecker entfernen, d.h. es liegt keine Spannung an.
2. Die Kalibrierungs Stiffte kurz schliessen
3. Die Min. Antriebsspannung wird um 0.1V erhöht
4. Ist die Min. Antriebsspannung > 10.8 V? ja --> Min. Antriebsspannung auf 9V setzen
5. Neue Min. Antriebsspannung auf dem Sender unter Akku 2 anzeigen
6. Gewünschte Spannung erreicht? nein --> weiter bei 2
7. fertig --> neue Min Antriebsspannung im EEPROM speichern

Höhere Spannung wie 30,0V / 6s kann man sicher auch messen. Dann müssen wohl die Widerstände geändert werden und auch etwas die Parameter in der Software; aber im Prinzip sollte das gehen.


Gruß Frank

flangel
24.02.2012, 12:19
Moin, moin,

hier ist noch ein kurzes Bild der Anzeige auf dem Sender.

Es werden die Spannungen der drei Zellen angezeigt
Akku 1 ist die Antriebsspannung
Akku 2 ist die minimale Antriebsspannung ab der Alarm ausgelöst wird (er lässt sich über die Kalib Stifte manuell ändern)

Die 'L KRAF V' Anzeige lasse ich immer hin und her laufen. Dies zeigt mir die Verbindung zum Sensor an. Bei einer Unterbrechung werden nämlich konstant die letzten Werte angezeigt. So habe ich eine Funktionskontrolle.

Gruß Frank

Elektro-Andi
26.02.2012, 01:29
Hallo Frank,
die Einstellung des Unterspannungsalarms ist auch sehr gut gelungen.
Allerdings nur für 3S. für 2,4,5,6S wäre ein eigenes Kompilat nötig.
Oder so:
-Akku abstecken.
-Kalibrierungsstifte länger als 2sek kurzschliessen dann zählt der Sensor in 3,6V Schritten von 7,2V bis 21,6V.
-Um den Feinabgleich in 0,1V zu machen die Kalibrierungsstifte kürzer 2sek kurzschliessen. (Z.B. 6V bis 7,2V.)

Ich denke es wäre besser, um Verwirrung zu vermeiden, die Alarmspannung an Sensor 2 nur bei abgestecktem Akku anzuzeigen.

Grüße
Andi

kamba
01.03.2012, 10:19
Hallo Frank

Ist damit auch ein Alarm bei Unterschreiten einer best. Einzelzellenspannung möglich?
Das wäre genau das was ich für den 450er Heli suche und mir von Graupner erhofft hatte.

Gruss Andy

landebahnpflug
01.03.2012, 12:58
cooler wenn es wie bei MPX das Protokoll dokumeniert von Graupner gibt.... naja aber geht dennoch ;)

Gast_28792
01.03.2012, 16:16
cooler wenn es wie bei MPX das Protokoll dokumeniert von Graupner gibt.... naja aber geht dennoch
Wieso? Ralf ist doch fast abartig freigiebig damit. Habe vorhin gerade ein Update geschickt.

Tom

flangel
02.03.2012, 14:30
Hallo Kamba,

die Gesamtspannung wird auf Unterspannung überprüft und auch Alarm ausgelöst.
Willst due jede Zelle einzeln überwachen?

Gruß
Frank

mha1
02.03.2012, 18:07
Der ADC Wandler des Attiny13 hat eine Auflösung von 10Bit; 0 ... 1024.


Hallo Frank,

misst Du single ended oder differential? Hintergrund: ich denke, dass bei einigen Reglern die Endstufen entkoppelt sind, d.h. Minus Fkugakku ist nicht notwenidgerweise auf Massepotential z.B. zum Empfänger.

VG Michael

helipage
03.03.2012, 12:01
Hallo Frank...

Wirst du das Hexfile und ggf. nen Schaltplan für dein Modul veröffentlichen ?
Hab zufällig noch nen paar ATTinys hier liegen ;-) und würde das ganze gern nachbauen.

Danke und ein schönes Wochenende
Dirk

kamba
03.03.2012, 18:05
die Gesamtspannung wird auf Unterspannung überprüft und auch Alarm ausgelöst.
Willst due jede Zelle einzeln überwachen?

Ja, hätte ich mir so gewünscht. Quasi analog den diversen Lipoblitzern, Lipowatch etc., nur dass eben der Alarm auf der MX-20 ausgegeben.
Gruss Andy

Bringer
07.03.2012, 11:11
Hallo zusammen,

bin auch mit an board, hab mit einen BMP085, aber nur Sensor ohne board die 9 euro zum breakout, kann man sich als bastler sparen, und den arduio mini pro 3.3 geordert.

Hat denn jemand nochmal was vom Flying-doc gehört? Nach seinem Post vom Milestone 2 ward er nicht mehr gesehen ... komsich.


Und ja, so eine einzelzellen Überwachung möchte ich auch realisieren. Wenn ich hier dann weiter bin, stelle ich meine Weisheiten gerne zur verfügung.

grüße

swessels
08.03.2012, 06:34
Hallo zusammen,

ich lese hier von Anfang an fleißig mit. Hut ab, tolle Ideen!:)
Ich glaube ich muss auch mal wieder mit den Atmels spielen....

Gruß,
Stefan

stacheltier
10.03.2012, 16:57
Hallihallo,
ich beschäftige mich auch seit kurzem mit dem Bau eines eigenen Sensormoduls. Dabei bin ich auf euer Forum und diesen Beitrag gestoßen. Sehr interessant und überaus hilfreich. Nun zu meiner Frage:
Beim senden der Bytes vom Mikrocontroller zum Empfänger (in meinem Fall ein GR-12 HoTT) muss offensichtlich eine Pause zwischen die einzelnen Bytes. Weiß jemand wie lang diese Pause sein muss?
MfG
Sascha

MeiT
10.03.2012, 16:58
Weiß jemand wie lang diese Pause sein muss?


Hi,

2ms.

Grüße

stacheltier
10.03.2012, 17:04
Das ging ja schnell!:eek:
Vielen Dank

Gast_28792
10.03.2012, 17:32
Und vergiss das 5ms-Idle-Line nicht.

Tom

stacheltier
10.03.2012, 19:29
... noch mal zum mitschreiben.
0x80 0x89 - kommt vom Empfänger
MC wartet 5ms und überprüft ob noch Daten unterwegs sind
sind keine weiteren Daten angekommen sendet MC 0x7c wartet 2ms 0x89 wartet 2ms ....

Da macht sich mein Empfänger aber garnix draus. Der Sender (MX-12 HoTT) zeigt nix an.

hier mal ein Mitschnitt (Vario-Dummy)


[10/03/2012 17:47:16] - Open COM4 port (C:\Program Files\Eltima Software\Serial Port Monitor\SerialMonitor.exe)



[10/03/2012 17:47:16] - Read data


80 89 7c 89 00 90 00 f3 01 f4 01 f3 01 3a 75 30
75 08 75 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 7d c0

[10/03/2012 17:47:20] - Close port

Gruß Sascha

MeiT
10.03.2012, 19:32
Hi,

Checksum richtig ?

Du sendest im Textmodus?

TIP: (Binär bei ist einfacher zu verstehen und zu probieren)

Grüße

Gast_28792
10.03.2012, 20:31
Sascha, Du sprichst offenbar vom Adressieren eines Sensors Typ "VARIO" im Binärmodus.

Ja, wenn Dein Sensor 0x80 0x89 gesehen hat, guckt er nach 5ms, ob inzwischen jemand sendete. Wenn nicht, war das tatsächlich für ihn, und er legt los, schön 2ms zw. seinen Antwortbytes.

Am Ende die Checksumme (is ja easy) sollte stimmen, sonst versteht der Busmaster Bahnhof. Nur die SmartBox im Textmodus scheint eine falsche Checksumme nicht zu jucken, was sich sicher mit einem nächsten Update noch ändern kann.

Tom

Die Checksumme stimmt aber.

stacheltier
10.03.2012, 20:45
Vario hab ich jetzt nur probiert, weil ich hier einen gültigen V4 Datensatz gefunden hab. CRC ist klar. Stimmte auch in all meinen Tests, aber meine Funke zeigt einfach nix an. Ich hab keinen Plan was ich falsch mache. Das "SensorModul" reagiert ja korrekt und sendet seine Daten.
Gruß Sascha

Edit: Gesendete Werte sind fix. Ich wollte erstmal die Kommunikation sicherstellen bevor ich mich um Messwerte kümmere.

Roesel
12.03.2012, 18:29
Hallo Allerseits,

vielen Dank für diesen tollen Thread.
Ich baue jetzt gerade einen 3s Spannungssensor. Auch für die Einzelspannungen.
Vielen Dank für die zahlreichen Software Beispiele.
Was mir auffällt, ist dass in meinem aktuellen Arduino IDE serial.print( xx, BYTE ) vom Compiler nicht mehr akzeptiert wird.
Man soll jetzt serial.write() nehmen. Dann geht's plötzlich!

Die 3 Spannungsteiler mit den Klemmdioden funktionieren schon. Der Arduino-mini ist auf dem Weg zu mir.
Man kann die Schaltung sehr einfach mittels Lötplatinen mit den Kupferstreifen aufbauen.

Wenn ich damit durch bin, werde ich eine kurze Anleitung mit Bauteilliste schreiben, damit auch blutige Lötanfänger eine Chance auf einen einfachen Sensor haben.
Vielleicht hat Graupner ja auch schon ein Produkt in der Pipeline. Ein Mini-3S-Volt-Sensor ist jedenfalls eine echte Lücke im Portfolio.

Gruß
Rösel

MeiT
12.03.2012, 18:54
Hallo Frank,

misst Du single ended oder differential? Hintergrund: ich denke, dass bei einigen Reglern die Endstufen entkoppelt sind, d.h. Minus Fkugakku ist nicht notwenidgerweise auf Massepotential z.B. zum Empfänger.

VG Michael

Hi,

gute Frage... ;)

Endstufen komplett entkoppelt gibt es im Modellbau nicht.
Brückenendstufen sind Normal.

Aber trotzdem stellt sich die Frage nach dem Potential.

Akkumasse ist in der Regel auch Empfängermasse. Selbst bei HV ala 14s wird BEC verwendet.
Und da Telemetriemasse eben auch Empfängermasse ist, ist auch Akkumasse dann Telemetriemasse.

Mir graut der Gedanke an einfache Spannungsteiler zur Einzelzellenmessung.

Ohne Last mag das ja noch gehn, aber bei 50, 100, 200A, kommen da auch mal 0,5V vom Akku zum Regler zusammen.
Dann noch 0,5V vom Regler-BEC zum Sensor?
Da kann man sich mit dem ohmischen ausrechnen was für ein Strom da über die Telemetrieanschlüsse fliest.

Wenn alles geht, noch alles Okay.
Aber geht dann im Flug mal Minus vom Akku ab, dann nimmt die Masseschleife gleich das ganze System incl. Empfänger und Sensoren ins Grab. (abgesehen vom Fluggerät ;) )


Grüße

ingo_s
12.03.2012, 20:15
Hi,

den Fehler den Minus 1. Zelle am Balancer Anschluss mit dem Anlagen Minus zu verbinden habe ich leider auch bei kommerziellen Produkten gefunden.
Der Modellbauer schaut ganz verdutzt, wenn dann mal so ein dünnes Kabel anfängt zu qualmen :-)

Das löst man anders. Auch an diesem Pin wird über einen Spannungsteiler die typisch negative Spannung (durch den Spannungsabfall Akku->Steller-RX) gemessen. Es muß nur die praktisch immer über den Umweg des Stellers vorhandene Minus Verbindung Akku -> RX vorhanden sein.

Im Anhang ist mein 2-3S Lipo-Saver (hier für den MPX MSB) zu sehen. Die Blitz-LED ist für den Betrieb ohne Sensor-Bus.

Eine Software Anpassung an Hott habe ich mangels Hott Umgebung bisher noch nicht durchgeführt.

Gruß Ingo

Elektro-Andi
13.03.2012, 13:27
Hi,

den Fehler den Minus 1. Zelle am Balancer Anschluss mit dem Anlagen Minus zu verbinden habe ich leider auch bei kommerziellen Produkten gefunden.
Der Modellbauer schaut ganz verdutzt, wenn dann mal so ein dünnes Kabel anfängt zu qualmen :-)

Gruß Ingo

Hallo Ingo,
ja, das sollte man nicht ignorieren.
Wie misst du mit einem Atmel eine "negative" Spannung ?

Alternativ könnte man den Sensor aus dem Akku versorgen und per Optokoppler zum Empfänger gehen.

Oder, bei Gesammtspannungsmessung, einfach Minus zum Akku weglassen sodass der Sensor nur Masse über den Empfänger hat.

Grüße
Andi

ingo_s
13.03.2012, 14:28
Hallo Andi,

negative Spannung mißt man, indem man den Spannungsteiler etwas positiv vorspannt. Das gibt dann bei 0Volt einen Offset, der bei negativer Spannung kleiner wird und die Berechnung der negativen Spannung ermöglicht.

Gruß Ingo

Bringer
15.03.2012, 09:44
Hallo,

hat denn jemand von euch schon diesen Sensor von Flying Doctor nachgebaut und erfolgreich laufen?

Ich habe mir die Sourcecodes runtergeladen, dann an Arduino IDE 1.0 angepasst, da sich einiges in den Libs geändert hat, so existiert z.b. die WProgramm.h nicht mehr und heißt nun Arduino.h.

An welchen Pins muss ich denn den BMP085 anschließen? Auch kommt aus meinem GR12 keine 3.3 V (wie von flying-doctor beschrieben) am sensor sondern 5 V. Vermutlich habe ich mir nun damit meinen BMP085 gebraten.

Im großen und ganzen muss ich mich nun selber hinsetzten und das ganze selber entwickeln, da der threat zum direkten nachbauen, meiner meinung nach, so nicht geeignet ist. Es fehlen einfach die benutzen Pinbelegungen.

grüße
Bringer

MeiT
15.03.2012, 09:50
....
..Auch kommt aus meinem GR12 keine 3.3 V (wie von flying-doctor beschrieben) am sensor sondern 5 V. Vermutlich habe ich mir nun damit meinen BMP085 gebraten. ...

Hallo,

am Telemetrieanschluss liegt die vollen Empfängerspannung an.
Also auch mehr als 5V, wenn mehr als 5V Eingangsspannung in den Empfänger geht.

Grüße

MeiT
15.03.2012, 18:43
... da der threat zum direkten nachbauen, meiner meinung nach, so nicht geeignet ist. ...

Hi,

lange hat es gedauert, aber ich habe dann doch mal nach "DIY" geschaut.

Das heist nicht mehr als "Do it yourself".

Das ist also nicht, dass jemand sich Mühe macht

und andere es nur nachbauen.

Ein wenig Anstrengung muss schon dabei sein.

(ich persönlich wäre sogar dafür, dass die ganzen "Arduino" Entwickler auf "C" umsteigen.
Da ist man einfach näher am Atmel AVR.

"C" ist sicher nicht schwerer als Arduino )

Grüße

Mulder
15.03.2012, 18:59
Hallo,

habe den Sensor von Flying Doc soweit am laufen, jedoch noch nicht im Flug getestet und sicher noch nicht perfekt. Habe aber vorher u.a. folgeden Anpassungen gemacht:

- Bidirektionale Kommunikation eingebaut
- Checksummenberechnung korrigiert
- Debugausgabe auf Terminalprogramm (wenn unmittelbar nach dem Start ein "D" gesendet wird)
- Anpassung für Arduino V1.0
- Anpassung auf Hott V4
- Stromsensor ACS758 mit Kapazitätszähler

Es ging darum, dass die interne Logik im Empfänger mit 3,3V läuft. Somit muss der Mikrocontroller des Sensors mit 3,3V laufen damit die gesendeten TX Pegel 3,3V nicht übersteigen um im Empfänger kein "Latch Up" zu verursachen. Evt. ist der PIC im Empänger aber auch 5V Tolerant, dazu müsste man sich das Datenblatt mal anschauen.

Genaue Infors wie ein BMP085 am Arduino Pro angeschlossen wird findet man z.B. in der Doku zum MultiWiiCopter (3,3V <-> Arduino / 5V Arduino mit LLC (logic level converter).

Habe Flying Doc mal angeschrieben, ob er den angepassten Code zur Verfügung stellen möchte aber keine Antwort erhalten. Es wäre schön, wenn man das Ganze als OpenSource Projekt weiterführen könnte.


Grüße,
Jochen

Elektro-Andi
15.03.2012, 20:53
Hallo,
ich habe die SW von FlyingDoc ähnlich(unabhängig) weiterentwickelt wie Jochen. Bei mir läuft alles auf 3,3V.
Vario habe ich weggelassen und alles im Hauptprogramm zusammengefasst. Kurz und knapp und einige Kommentare eingefügt. Die restlichen Warnansagen habe ich eingefügt. Mein Kapazitätszähler scheint auch ganz gut zu laufen.
Meiner läuft derzeit auf Hott V3.

! Das Masseschleifenproblem nicht vergessen.
Ich versuche es mal ohne Minusleitung vom Sensor zum Akku. Er holt sich also Masse nur über den Empfänger. Dadurch entsteht bei höherem Strom natürlich ein Messfehler. Der sollte aber ab 3 S klein genug ausfallen.

Es gibt hier mittlerweile einige Entwickler. OpenSource wäre super.
Grüße
Andi

Kailee
16.03.2012, 01:43
Hi alle,

ich lese hier seit kurzem sehr interessiert mit, bisher ohne wirkliche Anwendung für die tolle Arbeit die geleistet wurde, aber jetzt hätte ich aber eine Idee mit der dieses System evt. für das automatische Wendentriggersystem (siehe http://www.rcgroups.com/forums/showthread.php?t=1070146) extrem nützlich sein könnte; dieses Projekt verwendet eine Webcam um die Modelle an der B-Wende zu tracken und bei passieren der Wendelinie einen Sound aus dem Laptop auszugeben, der dann per 150m Lautsprecherkabel an kleine Lautsprecher beim Piloten übertragen wird..

Frage ist nun ob folgendes möglich ist, um die Ausgabe via HoTT kabellos zu gestalten; ein 2. (Satelliten-) Empfänger mit einem "Sensor" wie in diesem Thread beschrieben (mit Audiorelais als Input das vom Kopfhörerausgang am Laptop angesteuert wird) ist an der B-Wende installiert, und sendet via HoTT ein Signal bei queren der Wendelinie zurück an den Sender, der dann seinerseits ein Audiosignal ausgibt... Ich denke das grösste Problem ist ob beide Empfänger (also der im Modell und der am Boden an der Wende) jeweils Telemetriegeräte angeschlossen haben können - ich fliege selbst z.B. mit einem Unilog und könnte auf den auch nicht verzichten...

Ist sowas möglich?

Danke im Voraus,


Kai.

Bringer
16.03.2012, 09:17
Hallo Kai,

So direkt nicht aber mit ner kleinen improvisation denke ich schon:

Es müssen halt Parameter "Vergewaltigt" werden - z.b. Spannung, und diese als signal zu missbrauchen, und am sender dann für dieses signal eine Warnschwelle ausgeben zu lassen.

Bsp: Warnspannung < 12 V, Sensort sendet 12 V -> dann kommt das modell -> sensor sendet 0 volt -> Sender gibt Warnton aus -> Modell ist wieder weg -> Sensor sendet wieder 12 V -> Warnton erlischt.

Technische lösung: Die trackingcamera muss irgendwo ein abgreifbares digitales oder analoges signal ausgeben (kann wohl aus das audiosignal sein, welches dann aber vorher ein "wenig" aufbereitet werden muss damit der Arduino auch erkennt das da was kommt ) welches man dann über einen Eingang am Adruino auswertet um so die 12V zu senden oder eben die 0V.


Im Prinzip sollte es auf dese art und weise möglich sein. Ich lass mich aber genre von den "erfahreren" Leuten hier berichtigen.

grüße
Leif

P.S.: Wie das natürlich dann mit zwei empfänger zur gleichen zeit aussieht, einer am boden einer im modell .... ob das geht , weiss ich leider nicht, aber vermutlich ist das der knackpunkt.

johnlenfr
22.03.2012, 10:38
Moin, moin,

hier ist noch ein kurzes Bild der Anzeige auf dem Sender.

Es werden die Spannungen der drei Zellen angezeigt
Akku 1 ist die Antriebsspannung
Akku 2 ist die minimale Antriebsspannung ab der Alarm ausgelöst wird (er lässt sich über die Kalib Stifte manuell ändern)

Die 'L KRAF V' Anzeige lasse ich immer hin und her laufen. Dies zeigt mir die Verbindung zum Sensor an. Bei einer Unterbrechung werden nämlich konstant die letzten Werte angezeigt. So habe ich eine Funktionskontrolle.

Gruß Frank

Hi, I write here in english because I'm not able to speak German language. So, sorry for that.
I try to do the same thing with my MX-12, but it doesn't work and I don't know why.

Is it possible to take a look at your code?

I'm trying to do the same thing like it is describe here:
http://www.thyzoon.fr/Aeromod/LipoHott/LipoHott1.php
http://www.thyzoon.fr/Aeromod/LipoHott/Fichiers/LiPoM_0_43.zip


I hope that someone could help me to solve the problem.

I test to change the time between two HEXA in the function message.send() (in the file Message.cpp in the For function)...
I test to change the time after the request code 0x80 0x89 but without success (variable "TPS_EM" in message.h file)...

If someone understand me and help me I will be very greatfull for that.

If you have any examples codes or part of code to explain to me because I don't know what to do.

If someone understand french you can go here also:
http://www.modelisme.com/forum/aero-radio-electronique/165929-lipometre-pour-telemetrie-graupner-hott-diy.html

Thanks ;)

Mulder
22.03.2012, 10:55
Hallo,

Im ersten Testflug habe ich in meinem nachgebauten EAM Sensor noch folgende Werte vermisst, die auf dem Flugplatz ohne PC doch sehr nützlich wären:

- Minimale Lipo Spannung
- Max. Strom
- Max. Höhe

Hat jemand eine Idee wie diese Werte in V4 übertragen werden und ob das EAM diese überhaupt unterstützt? Das Original Vario kann meines Wissens die max. Höhe anzeigen.

Jochen

MeiT
22.03.2012, 11:04
.....
Hat jemand eine Idee wie diese Werte in V4 übertragen werden und ob das EAM diese überhaupt unterstützt? Das Original Vario kann meines Wissens die max. Höhe anzeigen. ...

Hallo,

die werden Original im Textmodus übertragen.

Also auf "Sensor einstellen" usw.

Grüße

johnlenfr
29.03.2012, 21:14
Hi, I write here in english because I'm not able to speak German language. So, sorry for that.
I try to do the same thing with my MX-12, but it doesn't work and I don't know why.

Is it possible to take a look at your code?

I'm trying to do the same thing like it is describe here:
http://www.thyzoon.fr/Aeromod/LipoHott/LipoHott1.php
http://www.thyzoon.fr/Aeromod/LipoHott/Fichiers/LiPoM_0_43.zip


I hope that someone could help me to solve the problem.

I test to change the time between two HEXA in the function message.send() (in the file Message.cpp in the For function)...
I test to change the time after the request code 0x80 0x89 but without success (variable "TPS_EM" in message.h file)...

If someone understand me and help me I will be very greatfull for that.

If you have any examples codes or part of code to explain to me because I don't know what to do.

If someone understand french you can go here also:
http://www.modelisme.com/forum/aero-radio-electronique/165929-lipometre-pour-telemetrie-graupner-hott-diy.html

Thanks ;)

Hi,
I finally got it work.
To summerize, DO NOT USE AN ARDUINO BOARD WITH USB INTEGRATE ON IT (like Arduino Uno, Arduino Nano, ....) , IT WILL DISRUPT SIGNAL

Configuration is:
Lipomètre v0.43 can be found here: http://www.thyzoon.fr/Aeromod/LipoHott/LipoHott3.php (Thanks to Thyzoon ;) )
Upload with Arduino IDE 0.22
On board Arduino Mini v4
Receiver GR12 with Firmware rx6_2a80_e9
Remote control is MX-12 Hott

http://img580.imageshack.us/img580/4470/imgp7859j.jpg
http://img189.imageshack.us/img189/5853/imgp7860j.jpg
http://img593.imageshack.us/img593/3580/imgp7861.jpg
http://img210.imageshack.us/img210/9570/imgp7862u.jpg
http://img19.imageshack.us/img19/4292/imgp7863z.jpg

Thanks to Mulder (Jochen) also for his help on this forum ;)

johnlenfr
11.04.2012, 16:51
Hi,
I finally got it work.


See results here:

http://www.youtube.com/watch?v=03T1ZulBE1Y&feature=youtu.be

And here:

http://www.youtube.com/watch?NR=1&feature=endscreen&v=7TuGVVrPlbg

CirrusMoth
02.05.2012, 11:51
Leider ist es bei den DIY-Sensoren sehr ruhig geworden. Deshalb möchte ich hier mal eine Frage in den Raum werfen: Hat sich schon mal jemand von euch mit den GPS-Daten beschäftigt? Ich habe da noch so ein bis zwei GPS-Module aus der Bucht herumliegen. Mangels GPS-Sensor kann ich mir aber leider nicht ansehen, was da so hin und her gesandt wird:cry:.

Gruß Sebastian


PS: Noch ein kleiner Tipp: Es muss nicht immer ein Arduino sein. Ich habe z.B. zwei kleine Regler, die an der Endstufe nicht so ganz Stressresistent waren :) einer neuen Bestimmung zugeführt. Alles unnötige wurde abgelötet, ein paar Brücken und Spannungteiler drauf und schon kann man einen Sensor daraus machen. Ideal ist es, dass es sich bei den Prozessoren oft um ATMega8 L handelt, also auch 3,3 V kein Problem darstellt.

Elektro-Andi
06.05.2012, 00:31
Leider ist es bei den DIY-Sensoren sehr ruhig geworden.

Ja, seltsam, alle von Graupner aufgekauft worden ? ;-)
Nein, ich habe auch einen gebaut. Momentan im Einsatz als reiner Spannungssensor mit Unterspannungswarnung..
Spannungsteiler 1:10. Datenleitung über 2 Widerstände auf TX, RX verteilt.
Datenstruktur ist hier aus dem Forum. Hauptsächlich von FlyingDoctor.
Momentan auf V3 da ich noch nichts auf V4 upgedatet habe.
Nur in +, zwischen Regler und Akku stecken. Masse bekommt er über den Empfänger -> also keine Masseschleife.

Mit GPS Daten kann ich leider nicht helfen, wende dich mal an Graupner, fragen kostet ja nichts..

Grüße
Andi

818437

818438

MeiT
09.05.2012, 17:41
Leider ist es bei den DIY-Sensoren sehr ruhig geworden.....

Hi,

dauert halt ein wenig ;)

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-3.JPG


Dabei ist ein 1 bis 12S Einzelzellensensor :)

Grüße

Evgenij
09.05.2012, 19:18
Hallo!
Kann mir jemand sagen ob auf basis von Flyingdoctor-Programm die Messwerte richtig ankommen.
Ich hatte immer mit 3S geflogen und mir wurde immer richtig angezeigt, sogar von 1S bis 3S komme immer richtige werte.
Wenn ich 4S anklemme wird nur 13,5V.
Evgenij

Elektro-Andi
10.05.2012, 12:10
Hi,


Dabei ist ein 1 bis 12S Einzelzellensensor :)

Grüße

Hallo MeiT,
die Platinchen sehen sehr schön aus.
Es wäre toll wenn du die Schaltpläne dazu offenlegen würdest :-)
Da könnte man sicherlich die eine oder andere Anregung für eigene Projekte entnehmen.
Grüße
Andi

MeiT
19.05.2012, 09:04
Moin,

die Sensoren sind ein wenig aufwendiger als nur Spannungsteiler, deshalb ist da so viel Zeug drauf.
Die Spannungen werden differenziell über einen OPamp gemessen, damit alle Einzelzellen die gleiche Auflösung haben.
Auch Strom wird diff gemessen, sodass das Masseproblem nicht mehr vorhanden ist und der Sensor auch mit Optokoppler funktioniert.
Auf dem Balanceranschluss sind zwei Pins mehr, wo ein NTC im Akku automatisch mit angeschlossen wird. So ist es auch im Pulsar 3 gelöst, dass man die Akkutemperatur immer gleich mit dabei hat.
Da der ATmega328 nur 8 ADC Eingänge hat, sind für den 12S Sensor Analogschalter drin, sodass 6S gemessen wird, dann umgeschaltet, dann die restlichen 6S messen.

Ja, es gibt PICs die eine grosse Anzahl differentielle 12-Bit ADC Eingänge haben, aber ich wollte nicht von Atmel auf PIC wechseln.
So ein wenig Analogtechnik stört ja keinen ;)

Das ganze ist in ohne Lupe lötbaren 0603, SOT23 und TQFP32 aufgebaut.
Multisensor 1S bis 4S plus Strom, Temp, RPM hat 20*25mm.
1S bis 12S Sensor plus Temperatur hat 25*35mm.
Mit QFN, 0402 und SC-70 ist vielleicht die hälfte der Fläche drin.

Das ganze ist vom Aufwand etwas übertrieben für einfache Spannungsmessung.

Da alles differenziell gemessen wird, kann man sogar auf den Shunt Widerstand verzichten und macht die Stromessung z.B. über die Anschlusskabel vom Regler. Man hat dann einen grösseren Temperarkoeffizienten, aber für einfache Fälle reicht das.

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-4.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-5.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-6.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-7.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAMEIT-1.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAMEIT-2.JPG

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAMEIT-3.JPG

http://pics.m-eit.de/Modellbau/lader/p3/balancer-2.JPG

Grüße

ingo_s
20.05.2012, 11:23
Hallo MeiT,

sehr schön umgesetzt, wenn auch für meinen Geschmack etwas zu aufwendig.
Meine ähnlichen MSB Sensoren bis 6S (auch mit ATMega) haben nur Spannungsteiler, und sind mit Oversampling auf 11Bit und Software Kalibirierung der Spannungsteiler realisiert.
12S ist allerdings schon eine Herausforderung, da muß man zu Deiner Lösung greifen oder mindestens einen 12Bit ADC einsetzen. Habe deshalb schon mit dem STM32F1xx geliebäugelt.

Was hast Du für OpAmp für die Spannungs- und Strommessung eingesetzt? Für die Strommessung setze ich den INA138/168 ein.

Gruß Ingo

MeiT
20.05.2012, 17:10
..
Was hast Du für OpAmp für die Spannungs- und Strommessung eingesetzt? Für die Strommessung setze ich den INA138/168 ein....

Hi Ingo,

für 12S => LM321
für 4S => MCP6071
für Strommessung => MCP6071 mit -2V und +3V Betriebsspannung.

Low Side Messung finde ich angenehmer, da ich dann in besonderen Fällen die Strommesung vom 4S Sensor mit dem 12S Sensor kombinieren kann, da der 4S Sensor über GAM Protokoll läuft und der 12S Sensor über EAM Protokoll.
Der 12S Sensor hat keine Strommessung, da es nur als Zusatz zum Jlog2 mit Jive gedacht ist, der ja das GAM macht.

Grüße
MeiT

MeiT
28.05.2012, 16:13
Hi,

die letzten Tage war Erstflug. Mikrokopter mit 3S.

Sieht gut aus.

Jetzt fehlen noch Funktionen wie einstellbare Warnschwellen übers Telemetriemenü.

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/GEMEIT-8.JPG

Grüße

HSC
29.05.2012, 12:46
Hallo!

Das ist genau das, was ich für meine kleinen Hubschraubern gesucht ..... (Ich habe T250 und 3 gauiX2 3S 850 mAh)

Original-Graupner Abtastern sind zu groß und schwer .........

SM ist zu schwer für $ $ $ und zu viel spageti Kabel ......... (Spektrum-Stil)

Ist das Ding auch die Berechnung der Kapazität?

Ist es posible bestellte ein paar von irgendwoher?

Jede Info wäre toll ....

Elektro-Andi
29.05.2012, 23:12
Hallo MeiT,
deine Sensoren sind ja sehr schön und professionell, verkaufst du sie dann an Graupner ? ;-)
Als Selbstbastelprojekt aber doch sehr hoch angesiedelt, was den Bastlerkreis etwas einschränkt.


Nun zu meinem:
siehe #183

er hat jetzt schon mehrere Flüge hinter sich und hat bestens funktioniert.
Es wird nur die Spannung gemessen und ab 10,1V Alarm gegeben.
Ich habe nur Plus am Akku angezapft. Minus bekommt er über Regler und Empfänger damit keine Masseschleife entsteht.
Der dadurch entstehende Messfehler durch Spannungsabfall im Akkustecker/ Reglerkabel... hat sich als vernachlässigbar klein herausgestellt. Vorausgesetzt man verwendet überall gute Steckverbinder.
Grüße
Andi

Globe
30.05.2012, 12:23
Hallo zusammen,

ich bin auch fleißig am Hott Sensoren basteln.

Zunächst soll es ein Piotrohr werden. Möchte meine berechnete Geschwindigkeit gerne in einen GPS-Frame packen. Deshalb meine Frage:

Hat von Euch schon jemand das Protokoll vom GPS-Sensor implementiert und kann mir ein paar Infos zum Aufbau geben?

Viele Grüße
Georg

helipage
31.05.2012, 12:52
Hallo zusammen...

Kann es sein, dass hier (jeder für sich) das Rad neu erfindet ?
Hab diesen Thread hier schon einige zeit verfolgt. Irgendwie bastelt ja hier jeder für sich :-(

Ich muss aber auch gestehen, dass ich leider durch diesen Thread hier nicht mehr ganz durchsteige :-(
Programmierung war nie so ganz meine Stärke...

Daher auch meine Frage:
Ich bräuchte für ein kleines Indoor-Modell lediglich eine Übermittlung der Spannung aller einzelnen Zellen des Lipos (auch nicht mehr als 3S)
Strom, Kapazität etc. kann alles wegfallen...

Gibt es irgendetwas zum Selbstbau in dieser Richtung ?
Möglichst ohne großes Arduino-Board, Gewicht sollte möglichst klein bleiben.
Ich meine, ganz am Anfang dieses Threads hatte mal jemand etwas mit einem einfache ATTiny (13?) gebaut...

Ach ja, Protokoll sollte auf die Version 4 ausgerichtet sein.

Wäre klasse, wenn mir jemand weiterhelfen könnte.
Vielen Dank


Grüße
Dirk

Bringer
01.06.2012, 11:05
Hallo MeiT,

sehr schöne sensoren, nur eine Frage am rande, behälst Du das wissen für Dich welches Du gesammelt hat, oder wirst Du
die Baupläne samt Software offenlegen ?

Weil es muss ja nicht wirklich jeder für sich rumbasteln, es gibt menschen die können keine Software und menschen die können
keine Hardware und dann gibts auch noch gruppen die haben beides in sich vereint. Aber basteln mögen sie vielleicht.

grüße
Bringer

Globe
01.06.2012, 14:06
Hallo,

nachdem ich keine Informationen zu den GPS-Frames finden konnte, hab ich selber mal das Protokoll zerlegt. Hier das Ergebnis was ich auf die Schnelle raus gefunden habe:

typedef struct
{
uint8_t StartByte; // 0x7C
uint8_t Packet_ID; // HOTT_GPS_PACKET_ID (0x8a)
uint8_t WarnBeep; // Anzahl der Töne 0..36
uint8_t constPar; // muss immer 0xA0 sein
uint8_t label1; // Invertierte Darstellung einzelner Werte (bitcodiert)
uint8_t label2; // Invertierte Darstellung einzelner Werte (bitcodiert)
uint8_t direction; // Richtung zum Modell in deg/2
uint16_t v_kmh; // Geschwindigkeit in km/h
uint8_t w_e; // 0 = westliche / 1 = östliche Länge
uint16_t lon_deg_min; // Länge in Grad|Minuten
uint16_t lon_min_dec; // Dezimalstellen Minuten
uint8_t n_s; // 0 = nördliche / 1 = südliche Breite
uint16_t lat_deg_min; // Breite in Grad|Minuten
uint16_t lat_min_dec; // Dezimalstellen Minuten
uint16_t dist; // Entfernung in m
uint16_t alti_m; // Höhe in m (+500)
uint16_t vario_m_per_1s; // Steigen in m pro 1s (+30000)
uint16_t vario_m_per_3s; // Steigen in m pro 3s (+120)
uint8_t nullByte1;
uint8_t directionHome; // Richtung zum Startpunkt in deg/2
uint8_t nullByte2[17];
uint8_t EndByte; // 0x7D
uint8_t Crc; // CRC
}GpsPacket; //GPS Module

Vielleicht hat ja der ein oder andere noch ein paar Vorschläge zu den leeren Bytes?


Viele Grüße
Georg

Evgenij
01.06.2012, 16:09
Hier ist ein Link (https://github.com/obayer/MultiWii-HoTT).
Da kannst Du versuchen die Skripte zu benutzen.

oder noch das (http://svn.mikrokopter.de/listing.php?repname=FlightCtrl&path=%2Ftags%2FV0.86d%2F&#A368ab52c00a7798358cf02139b350669):

typedef struct
{
unsigned char StartByte; //0 // 0x7C
unsigned char Packet_ID; //1 // 0x8A - GPS
unsigned char WarnBeep; //2 // Anzahl der Töne 0..36
unsigned char Heading; //3 // 1 = 2°
unsigned int Speed; //4+5 // in km/h
unsigned char Lat_North; //6
unsigned char Lat_G; //7
unsigned char Lat_M; //8
unsigned char Lat_Sek1; //9
unsigned char Lat_Sek2; //10
unsigned char Lon_East; //11
unsigned char Lon_G; //12
unsigned char Lon_M; //13
unsigned char Lon_Sek1; //14
unsigned char Lon_Sek2; //15
unsigned int Distance; //16+17 // 9000 = 0m
signed int Altitude; //18+19 // 500 = 0m
unsigned int m_sec; //20+21 // 3000 = 0
unsigned int m_3sec; // 120 = 0
unsigned int m_10sec; //
unsigned char NullByte; // 0x00
unsigned char NullByte1; // 0x00
unsigned char EndByte; // 0x7D
} GPSPacket_t;

Für alle die auch GPS bauen:
Ich habe HIER (http://shop.trenz-electronic.de/catalog/product_info.php?products_id=737)
GPS-Sensor gekauft(27€ mit Versand).
Es funktioniert schon die Daten über Arduino mit Softserial zu lesen.
Es bleibt NUR die Daten an HOTT zu übertragen.

Globe
01.06.2012, 20:24
Hallo Evgenij,

fürchte dein GPS-Frame ist noch V3. Kann das sein?

Gruß
Georg

Evgenij
01.06.2012, 20:39
Ja, das stimmt.
Ich habe noch V3, aber für Anfan es ist egal, ich versuche noch zu verstehen, wie das funktioniert.

MeiT
02.06.2012, 17:59
Ja, das stimmt.
Ich habe noch V3, aber für Anfan es ist egal, ich versuche noch zu verstehen, wie das funktioniert.

Hi,

dann ist es sinnvoll gleich auf V4 zu wechseln und V4 zu verstehen.

Grüße

Mulder
03.06.2012, 13:37
GPS läuft bei mir auch schon ansatzweise (HOTT V4), ich verwende das PA6C Modul von Trenz Elektronik (MTK3339 Chipsatz), der Empfang ist super, habe in der Dachwohnung 7Satelliten!

Als GPS Library für den Arduino 1.0 verwende ich TinyGPS: http://arduiniana.org/libraries/TinyGPS. TinyGPS erledigt die komplette Parser-Arbeit. Die GPS Daten werden seriell über die NewSoftserial eingelsen. Damit bin ich noch nicht glücklich... Schön wäre z.B. ein kleines ATMEGA 644p Board, da der 644p zwei UARTS hat.

Die gps.speed() Funktion von TinyGPS welche die Geschwindigkeit als unsigned long in Knoten/100 liefern sollte liefert bei mir nur Unsinn... Auf Float Variablen möchte ich verzichten (TinyGPS liefert alternativ die Geschwindigkeit auch in km/h als float). Die Entfernungsberechnung und Winkelbestimmung fehlt noch vollständig.

Hier gibt es noch ein paar Infos zum Original HOTT-GPS falls das jemand interessiert:
http://fpv-community.de/showthread.php?9140-HOTT-GPS-Vario-frage&highlight=hott

Hier gibt es ein schönes GPS Projekt, wo man sich mal anschauen kann wie TinyGPS mit NewSoftSerial in Verbindung mit Arduino 1.0 verwendet wird.

http://code.google.com/p/phi-prompt-user-interface-library/ -> GPS Logger V5


Grüße,
Jochen

Evgenij
03.06.2012, 17:08
Damit bin ich noch nicht glücklich...
Warum bist du damit nicht glücklich?
GPS und Softserial brauchen nur 9600 als Geschwindigkeit.
Ich habe erst testweise mit Adafruit gpslogger gebaut. es funktioniert.
Kannst du dein Projekt hier Veröffentlichen?
Wir könne zusammen das zum Laufendem bringen.

MfG
Evgenij

Globe
04.06.2012, 16:32
Hallo zusammen!

So mein Test-Aufbau spricht mittlerweile auch HOTT:

832489

Als Basis dient ein STM32 Discovery Board. Daran angeschlossen ist ein GPS und ein 20bit Adc für den Drucksensor der Prandtlsonde. Der gemessene Staudruck wird in eine Geschwindigkeit umgerechnet und anschließend in die Hott Gps Frames gepackt.
Nächster Schritt wird noch ein Absolutdrucksensor um die Höhe messen zu können. Dann hätte ich eigentlich alles zusammen für mein TEK - Vario.

Viele Grüße
Georg

Globe
04.06.2012, 19:46
So nachdem es doch noch aufgehört hat zu regnen habe ich spontan einen kleinen Testflug gemacht.
Problem: Wind mit ~20km/h. Meine Messwerte schauen aber dennoch rech plausibel aus:

832596

Hier noch ein Bild von einem FPV-TEST-Lastenträger:

832591

Viele Grüße
Georg

Evgenij
05.06.2012, 21:25
Kann mir jemand von denen die ein GPS-Modul mit Arduino haben, nur den Datensatz welcher Arduino zum Empfänger schickt, zeigen.
z.B.
uint8_t message_array[45] = {
0x7c,0x8a,0x00,0xd0,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7d,0x00}
Danke!
Evgenij

Mulder
07.06.2012, 12:20
So,

hab jetzt alles soweit herausgefriemelt, dass alle GPS Daten korrekt übertragen werden. Habe das GPS-Emulator-Tool vom "Remzibi" OSD zum Testen hergenommen, dann passt auch die Geschwindigkeit, ich vermute aber, dass es mit dem GPS Modul noch nicht hinhaut obwohl ich RMC und GGA am Modul aktiviert habe. Testen werden ich dann mal indem ich den Aufbau incl. Sender ins Auto lege und eine Testfahrt mache...

Der Arduino läuft mit 8Mhz, da ich die 3,3V Version wg. den Pegeln zum Empfänger verwende. Damit sind mit der Softserial und 9600 Baud maximal 4-5Hz Update-Rate möglich.

-> Evgenij hat gefragt warum ich damit nicht glücklich bin: Ganz einfach, wenn ich schon ein GPS-Modul im Modell habe (FPV Modell in Verbindung mit Remzibi´s OSD) bzw. für die GPS Navigation im MultiWiiCopter, das mit 10Hz und 38400 bzw. 115k Baud läuft würde ich gerne das Signal parallel abgreifen und über den Hott Telemetrie Kanal übertragen....Der DIY Sensor sollte dann neben GPS natürlich auch noch die Strom / Spannungswerte und Variodaten übertragen, d.h. das GPS und z.B. das EAM Packet bedienen. Ich habe noch ein Pollin Eval Board mit dem ATMEGA644p da liegen, vieleichte teste ich mal ob das bei der Verwendung von 2 Hardware-UARTS hinhaut.

Die Sache mit dem STM32 von Globe finde ich klasse, vor allem wenn man bedenkt, dass das FRSKY Telemetriesystem auch einen STM32 Controller einsetzt und das FR-SKY zeug sehr günstig beim Hobbykönig zu bekommen ist und es die Schaltpläne bei FRSKY zum herunterladen gibt...

http://www.rcgroups.com/forums/showthread.php?t=1471122&pp=50&highlight=frsky&page=23

MeiT
07.06.2012, 17:17
Hi,

12s Sensor geht wohl auch.

Leider kann man die Spannungen nicht im Hott Manager anzeigen lassen.

Jetzt steht das Grundgerüst, aber die Menüführung und Warnungen hab ich noch nicht drin :(

Grüße

http://pics.m-eit.de/Modellbau/fernsteuerung/hott/EAMEIT-4.JPG

adrock
08.06.2012, 21:57
Hi,

ich habe mich ein wenig mit dem Telemetrie-Protokoll beschäftigt, bitte korrigiert mich wenn ich falsch liege:

- (Fast) alle Sensoren werden bisher nicht direkt angesprochen, sondern immer über ein "Zwischenmodul", z.B. das "general air module" etc.
- Im Protokoll sind für die Sensorkennung nur 4 Bit (=16 Werte) reserviert,wovon 4 schon belegt sind (GAM, EAM, GPS, Vario).

Ich sehe da ein ganz entscheidendes Problem im Protokoll, was den Betrieb von mehreren Sensoren mit einem Y-Kabel angeht:

Es gibt zuwenig IDs. Wie sollen andere Hersteller (oder DIY) Produklte für HoTT adaptieren, wenn es nur noch ~10 freie IDs gibt? Natürlich kann z.B. ein DIY Sensor sich als eines der bekannten Module ausgeben, aber das Gelbe vom Ei ist das irgendwie nicht.

Entweder müsste man die Anzahl der IDs deutlich erweitern (2 Byte) und an Hersteller zuweisen, oder ein Protokoll beim Starten des Empfängers vorsehen, wie die Sensoren erkannt bzw. enumeriert werden können. Da es auf dem Sensorbus aber keine echte Kollisionserkennung gibt, dürfte das mit dem 1-Draht-Protokoll schwer werden.

Oder habe ich da was mit der Sensor-ID grundsätzlich nicht verstanden?

Wenn meine HoTT-Funke endlich da ist, wird erstmal experimentiert...

Viele Grüße
Markus

Globe
09.06.2012, 12:49
Hi adrock,

ich versuche mal die Sache zu erklären: Die einzelnen Sensoren(GPS,Vario,GAM..) anworten auf eine Anfrage vom Empfänger. Werden also direkt angesprochen. Damit gibt es keine Probleme mit mehreren Sensoren an einem V-Kabel und Kollisionen gibt es so auch nicht auf dem Bus. Bei zu vielen Sensoren wird nur irgendwann die Bandbreite etwas eng werden.
Was die ID-angeht hast du recht, hier werden im Moment nur 4 bit verwendet. Allerdings befindet sich in den Daten-Frames nochmal eine ID. Vielleicht soll das mal eine Erweiterung geben...

Ich kenn ja die Taktik von Graupner nicht. Aber ich glaube ehrlich gesagt nicht, dass sie in Zukunft für jeden Drittanbieter eigene Daten-Frames implementieren wollen. Das hätte ja mit dem aktuellen Protokoll auch jedesmal eine neue Sender-Firmware zur Folge.

Ich finde auch man hätte das Protokoll etwas "dynamischer" bzw. flexibler implementieren können, wobei der zusätzliche Aufwand natülich auch nicht zu unterschätzen ist. Meiner Meinung nach kommt ganz gut mit den vorhandenen Frames zurecht und es bietet sich eine schöne neue Spielwiese für Experimente.

Viele Grüße
Georg

ingo_s
09.06.2012, 18:48
Hi Globe,

was setzt Du denn für einen Diff-Druck Sensor und ADC ein?

Im Moment habe ich eine Kombi-Lösung aus MP3V5004 und MS5611 (Vario) an einem ATtiny85 (19x25x13mm) mit Schnittstelle für MPX Sensor Bus. Mit einigen Tricks habe ich ca. 12 1/2 Bit ADC Auflösung mit dem AVR. Später will ich auch einen ARM Core uP einsetzen, (das STM32 Discovery Board liegt auch schon hier) für bessere Filter und TEK Berechnungen ist in dem AVR keine Luft mehr.

Grß Ingo

Globe
10.06.2012, 00:08
Hallo Ingo,

ich verwende zur Zeit als Diff-Druck Sensor einen 5 INCH-D2-MV-MINI von All Sensors in Verbindung mit einem AD7785. Der Sensor ist super nur leider nicht ganz billig (hatte ich zufällig noch rumliegen). Als Absolutdrucksensor verwende ich momentan den bekannten BMP085, aber das Rauschen ist mir trotz FIR zu stark.
Habe gestern MPXV2010DP und MPXM2102A bestellt und möchte die beiden Sensoren an einem ADS1232 24bit ADC testen. Die Sensoren haben beide differenzielle Ausgänge und sind ratiometrisch zu Versorgungsspannung. Somit spare ich mir die bei der Auflösung nicht ganz simple Ref-Spannungsquelle...

Eine Fahrtkompensation habe ich auch schon implementiert. Das hat bei einem kurzen Testflug schon einen ganz guten Eindruck gemacht. Macht auf jeden Fall Lust auf mehr.
Wenn alles so funktioniert wie ich mir das vorstelle werde ich das Ganze mit dem STM32 auf eine möglichst kleine Platine verfrachten.

Viele Grüße
Georg

Mulder
15.06.2012, 10:52
Mir gefällt die Idee mit dem FR-SKY Sensor Hub mit STM32 Controller immer besser.

Ich habe mittlerweile herausgefunden, dass es für den STM32 eine Arduino-kompatible Entwicklungsumgebung (Maple) gibt.

http://leaflabs.com/docs/ide.html

Jetzt wäre noch ein passender Bootloader für den Controller im Sensor Hub nötig..

Globe
17.06.2012, 13:05
Hi Mulder,

puh das schaut ja simple und schick aus. Aber viele Vorteile von so einer etwas komplexeren CPU kann man mit den gebotenen Funktionen ja leider gar nicht richtig nutzen. Denke dabei an DMA, verschachtelte ISRs oder den super ADC des STM32. Ich würde da auf jeden Fall zu handgestricktem C/C++ und der "Standard Peripherals Library" raten. Bei Lust und Laune kann man auch gerne noch ein RTOS (z.B. FreeRTOS) nutzen.

Viele Grüße
Georg

Globe
09.07.2012, 19:43
Hallo zusammen,

hat eigentlich jemand eine Ahnung wie das SUMD Protokoll aufgebaut ist?

Gruß
Georg

Evgenij
16.07.2012, 20:37
Hi Leute!
Da flying-doctor in diesem Thema nicht mehr auftaucht,doch viele sich für dieses Thema interesieren,habe ich entschieden neue Repository zu erstellen.
Ich habe die Skripte für die V4 angepasst.
Hier ist ein Link (https://docs.google.com/folder/d/0BzcIXHqFXtj1b0ltdHlnQ2VYdlE/edit) mit geprüfter Voltsensor-Funktion
und HIER (https://docs.google.com/folder/d/0BzcIXHqFXtj1V3FJSkppN3hrMjQ/edit) mit geprüfter Voltsensor-Funktion und ohne geprüfter Vario-Funktion.
Da ich kein Programmierer bin,habe ich das so gemacht wie ich es konnte.
Ich hoffe dass die Leute die mehr Ahnung haben,mich in diesem Projekt unterstützen.
Alle Verbesserungsvorschläge oder Ratschläge nehme ich gern per E-Mail.
Dann würde ich sie gerne öffentlich stellen.
MfG Evgenij

landebahnpflug
16.07.2012, 20:45
Software sollte doch im Adruino Forum veröffentlicht werden. Zumal dort auch sehr viel Lösungen vorhanden sind .... ;)

Evgenij
16.07.2012, 20:50
Software sollte doch im Adruino Forum veröffentlicht werden. Zumal dort auch sehr viel Lösungen vorhanden sind .... ;)

Was für Forum meinst du?

Das es genau um Graupner und Fernsteuerungstechnik und "HoTT Telemetrie-Sensoren Eigenbau" geht, habe ich entschieden hier zu schreiben.

landebahnpflug
16.07.2012, 21:37
das ist ja auch ok nur die codes müssen nicht bei Google liegen
http://arduino.cc/en/ das ist die Arduino Seite von wo es in die unendlichen Tiefen der Programmierkunst geht ....
kaum ein Problem ohne Lösung...:D

CopterPilot
17.07.2012, 14:59
Hi,

ich bin gerade erst auf das Thema gestoßen. Ohne jetzte alle Seiten des Threads gelesen zu haben habe ich gerade nochmal ein paar Fragen.

Ist mittlerweile bekannt mit welchem Crc Algo und Polynom über welche Bytes des Datenpaket die Crc berechnet wird ? Oder geht das nach wie vor nur über eine fest definierte Tabelle für verschiedene Spannungswerte ?

Rx und Tx laufen ja scheinbar über ein und den selben Pin sprich man muss eine Software Uart implementieren und dann zwischen Senden und Empfangen zur Laufzeit umstellen sehe ich das richtig ?

Mich würde vorallem folgendes interessieren. Ist es möglich mit einem Ft232 Usb to Uart Wandler das Firmware Update bei der Hott zu machen ? Die Frage ist ja im Prinzip nur wie bei dem Originaladapter das Umschalten zwischen Senden und Empfangen erfolgt. (Solche Usb to Uart Wandler haben ja die Meisten gerade im Quadro Copter Bereich zwecks Konfiguration sowieso rumliegen)

Gruß CopterPilot

Evgenij
17.07.2012, 20:16
1.Ja "über eine fest definierte Tabelle"
2.Jaein. Wenn man richtig Programmiert, dann sprechen die Geräte miteinander.Und wenn nicht richtig, dann sendet Arduino ein Paket mit 45 Byte mit Hoffnung das es irgendwann emfangen wird.
Wenn man die Scripte von Tecodino anschaut, sieht man wie das funktioniert.
3.Usb-Aadapter von Graupnet ist ganz normale usb-to-rs232 Adapter. Ich benutze z.B. "FTDI Basic Breakout" fon Arduino um Graupner module zu programmieren.

CopterPilot
17.07.2012, 20:27
Danke für die Antwort.

Nochmal zum Ftdi.
Da ist ja auch nur ein Pin vorhanden. Schließt man dann nur den Tx-Pin vom Ftdi an an den Signalpin der Graupner ?

Das verwirrt mich etwas, denn auf den Videos sieht es so aus als würde die Update Software auch Daten aus den Modulen auslesen. Wenn ich nur Tx Ftdi auf Pin des Empfängers lege, dann dürfte die Update Software ja nur senden und nicht empfangen können. Mir wäre neu, dass die Ftdi Chips an einem Pin zwischen senden und empfangen umschalten können.

Evgenij
17.07.2012, 21:03
Da verbindet RXund TX über 1kOm Widerstand und RX oder TX (ich vergesse es immer:() an Empfänger

CopterPilot
18.07.2012, 11:57
Das müsste auch für das Sender Update funktionieren oder ?

Ich nehme an du meinst so wie auf dem Bild ?

852393

Wenn ich will das Update so nicht klappen. Kann die Graupner Gr Studio 2.1 überhaupt von jeder Firmware aus updaten ?
Auf meinem Sender ist noch die 1.611

Evgenij
18.07.2012, 14:23
So ist richtig:852441
Ich mache update auch so.
Ich wollte heute Abend auch ein Gr-16 updaten, dann sage ich dir welche drat RX oder TX direkt anzuschließen ist.

CopterPilot
18.07.2012, 15:03
Okay super, dann warte ich nochmal bis heute abend :)

Hast den Ft232 auf 5V oder 3,3V gestellt ?

Edit. uns ist es noch immer richtig, dass man den mittleren Pin der PC Buchse frei lässt sprich nur Gnd und den gemeinsamen Rx/Tx anklemmt ?

Evgenij
18.07.2012, 18:41
Ich habe gerade getestet.
Es ist TX direkt angeschlossen.
3,3 oder 5V ist für Arduino wichtig.


Mit Reset übrigens hatt funktioniert.

CopterPilot
18.07.2012, 19:42
Okay :)

Kannst du nochmal folgendes bestätigen ?

Benutzt wird die Pc Buchse am Sender und der mittlere Anschluss (da liegen 3V vom Sender drauf) bleibt frei.

Wie genau geht man beim Update von der Reihenfolge her vor ?

Erst Usb an Pc <-> Dann Software starten und mit Com Port verbinden <-> Dann Sender einschalten <-> Dann in der Software auf Download Start klicken ?

Elektro-Andi
18.07.2012, 20:16
Ich habe gerade getestet.
Es ist TX direkt angeschlossen.
3,3 oder 5V ist für Arduino wichtig.
.

Wenn dann hätte ich RX direkt angeschlossen.

Ich habe es aber so gemacht wie die Zeichnung von Evgenij, 2 Widerstände, geht einwandfrei.
Grüße
Andi

CopterPilot
18.07.2012, 22:47
Du meinst so wie in meiner Zeichnung oder ?
Ich hatte da die 2 Widerstände drin.

Allerdings will da irgendwas noch nicht so ganz funktionieren. Kann es sein das meine aktuelle Firmware mit 1.611 einfach viel zu alt ist um sie mit dem aktuellen Updater direkt auf die neuste Version zu bringen ?

Ich hatte vorhin bei Graupner angerufen der meinte etwas von warten bis ein Balken durchläuft und dann erst den Sender einschalten. Aber zu einem solchen Balken komme ich garnicht. Erst kommt die Sicherheitswarnung das RF abgeschaltet wird, wenn ich dann mit Ok bestätige. Rattern ein paar Punkte durch die aber alle mit Fail abschließen.

Elektro-Andi
19.07.2012, 10:39
Du meinst so wie in meiner Zeichnung oder ?
Ich hatte da die 2 Widerstände drin.

Allerdings will da irgendwas noch nicht so ganz funktionieren. Kann es sein das meine aktuelle Firmware mit 1.611 einfach viel zu alt ist um sie mit dem aktuellen Updater direkt auf die neuste Version zu bringen ?



Sorry, ja natürlich deine Zeichnung ! :o

Ich habe auch noch 1.6x drauf, aber Sender mit USB.
Da ich 10 verbaute Empfänger updaten müsste warte ich noch. Ich hoffe auf eine Erweiterung der Lehrer/Schüler Einstellungen ( Lehrer Master ) und mache dann erst Update.
Grüße
Andi

CopterPilot
19.07.2012, 18:01
Ich muss ja sagen das ich mit der Graupner Anlage als solche komplett zufrieden bin. Macht wirklich einen schönen eindruck und funktioniert bis jetzt absolut zuverlässig.

Die Tatsache, dass nun auch das Telemetrie Protokoll offen liegt bietet ja nochmal einiges an Potential.

Aber was Graupner da im Servicebereich und in der Technik verzapft finde ich doch mehr als nur fragwürdig.

Wie kann man 2 verschiedene Versionen der Mx-12 auf den Markt bringen bei denen der Karton optisch gleich ist und auch die Bestellnummer augenscheinlich identisch in der einen dann aber Usb und Sprachausgabe verbaut ist in der anderen hingegen nicht ? Wie soll ein normaler Kunde diesen Unterschied bitte merken ?

Wie kann es sein, dass auf der Website insgesamt 3 verschiedene Zip Archive für ein und dieselbe Anlage angeboten werden die komplett aber auch wirklich komplett andere Software komponenten entahlten, bei den kein mensch weiß welche nun für was funktioniert und welche nicht.

Also komplizierter und undurchsichtiger als aktuell bei Graupner kann man das ganze wirklich nicht mehr aufziehen.

Weiß zufällig jemand woran man erkennen kann, ob V3 oder V4 aktuell auf der Graupner installiert ist ?
Beim Update bin ich nach wie vor am verzweifeln. Ich habe jetzt nebenbei nochmal eine ComPort Sniffer mitlaufen gelassen. Der zeigt wenn das Graupner Tool am werkeln ist sowohl bei Lese als auch Schreibzugriff ordentlich ausehende Bytes an. (Es ist ja normal das die gesendeten direkt wieder vom ComPort empfangen werden, wenn Tx und Rx verbunden sind)

Daher scheint es am Ftdi so schonmal nicht zu liegen.
Dann bleiben ja im Prinzip nur die folgenden Möglichkeiten:
- Man muss etwas beim einschalten der Anlage beachten (richtiger Zeitpunkt ?)
- Nicht jede Software Version kommt mit jedem Mx-12 Sender klar (nur welche kann es ?)
- Ich schließe den Ftdi falsch an den Sender an (Wenn ich auf die Rückseite der Mx-12 und dort auf die Pc Buchse schaue, dann ist links also zur Innenseite der Fernbedienung der Daten pin und rechts außen Gnd) Den mittleren Pin habe ich frei gelassen (auf dem liegen die 3V vom Graupner Sender)
- Man muss das Update odch über die Telemetrie Buchse machen und nicht über die Pc Buchse
- Man muss die Baudrate manuell über den Gerätemanager einstellen, was aber ungewöhnlich ist das macht ja normalerweise die Software

cgiesen
19.07.2012, 21:38
Weiß zufällig jemand woran man erkennen kann, ob V3 oder V4 aktuell auf der Graupner installiert ist ?


Vielleicht solltest Du Dich weniger mit dem Protokoll und mehr mit der Anlage an sich beschäftigen.
Ich habe die MX12 und die MX20. Beide sagen mir schon beim Einschalten welches Version sie fahren!

Auch RTFM scheint mir hin angebracht.....

CopterPilot
20.07.2012, 18:03
Ich weiß ja nicht was für eine Mx-12 du hast (Es gibt ja verschiedene Versionen der Mx-12), aber meine sagt mir nicht ob die Protokollversion V3 oder V4 aufgespielt ist.

Beim starten wird lediglich die Firmwareversion 1.611 angezeigt. Nichts in Richtung V3 oder V4.

Die Anleitung habe ich gelesen ob du es glaubst oder nicht.

Bravo Hotel
20.07.2012, 20:16
Dann hast Du V3. Alle FW-Versionen bis V1.651 der MX-12 sind V3. Alle danach V4.

Gruß
Bernd

CopterPilot
20.07.2012, 20:37
Okay Danke :)

cgiesen
08.08.2012, 21:33
Hallo Zusammen,

gibt es irgendwo einen Überblick zum V4 Protokoll?
Ein PDF oder etwas ähnliches?

DANKE

Carsten

adrock
08.08.2012, 22:15
Hallo Carsten,

frag' doch einfach mal ganz freundlich beim Hersteller, ob er Dir die Spezifikation gibt.

Meines Erachtens sollte die Spezifikation etwas "aufgeräumt" und veröffentlicht werden. So wäre die Chance höher, dass wirklich protokollkonforme Sensoren bei den Selbstbauprojekten herauskommen. Vlt. würde sich ja auch jemand hinsetzen und eine freie HoTT-Bibliothek für AVRs oder PICs implementieren.

Ein paar Infos gibt es ja schon hier:

http://jlog.hacknet.eu/jlog2/faq/artverwandt-graupner-hott-technische-hintergrundinfos/

Grüße
Markus

cgiesen
08.08.2012, 22:23
Hallo,

Danke, den Linke ich natürlich schon.
Ich lese hier auch länger mit ;)

Ich werde dann mal Graupner bemühen müssen.

Gruß
Carsten

Globe
19.09.2012, 08:35
Hallo zusammen,

ich habe gerade in meiner Software das Electric Air Module implementiert und es funktioniert alles so weit. Das heißt meine Werte werden angezeigt. Nur leider funktionieren die Balkenanzeigen (Batteriesymbole) sehr eingeschränkt. Zwischen 0% und 100% des Symboles liegen 80V. So sehe ich bei einem 3 zelligen Lipo natürlich keine Veränderung wenn er langsam leer wird.
Beim Orginal Modul kann ich Textmodus Maximal und Minimal Spannung konfigurieren. Hat das dann auch Einfluß auf diese Anzeige oder gibt es noch einen weiteren Trick?

Viele Grüße
Georg

cgiesen
19.09.2012, 09:00
Zwischen 0% und 100% des Symboles liegen 80V. So sehe ich bei einem 3 zelligen Lipo natürlich keine Veränderung wenn er langsam leer wird.

Das ist einfach so.
Da kann man auch nichts einstellen :(
Vielleicht in einer neuen Version!

Globe
19.09.2012, 09:21
Hi Carsten,

danke für die flotte Antwort. Es gibt also schöne Symbole die so aber leider nutzlos sind. Schade...

Gruß
Georg

cgiesen
19.09.2012, 10:00
Ich verzweifel auch daran. Ich baue gerade eine Telemetrie für MultiWii ...

roadrunner373
01.11.2012, 10:23
Hallo Leute, hab da mal ne Frage.
Ich bin nicht so er Elektro-Experte, also nicht lachen.
Gibt es schon irgendwie nen Schaltplan für ne 6s-Einzelzellenüberwachung?
Würde es ja gerne so bauen wie auf der Seite (>>>klick<<< (http://www.thyzoon.fr/Aeromod/LipoHott/LipoHott1.php)), aber die Infos reichen mir leider nicht.
Hab noch Wattuinos mit 3,3V rumliegen, da müssten dann sicher alle Widerstände geändert werden und auch einer für die erste Zelle rein, oder?
Wäre über nen Schaltplan mit allem benötigtem Material dankbar. Vielleicht auch mit nem Beispiel-Bild zum Nachbauen... :) Hier hat doch sicher schon jemand sowas am laufen, oder?
DANKE :)

KalleR
01.11.2012, 10:33
da schließe ich mich gleich mit an. ist ja irgendwie sehr ruhig geworden hier. der "fliegende arzt" ist irgendwie nicht mehr dabei, und ich hab mich schon so auf eine schöne step-by-step-anleitung gefreut ;).

Hermann2349
01.11.2012, 11:17
Hallo Leute

Am 16.11.2012 soll ja von Graupner was kommen?Zwar nur für 1-4 Zellen aber besser wie nichts. ;)

Best.-Nr. 33630
Preis: 12,70 €


Gruß
Hermann

KalleR
01.11.2012, 11:47
danke für die info. das teil ist wirklich klein. werd mir dann mal eins bestellen und testen ;-) aber jetzt wird erstmal gebastelt....

roadrunner373
01.11.2012, 14:03
Kann mir jemand die Widerstände aus der Tabelle hier (Tabelle (http://www.thyzoon.fr/Aeromod/LipoHott/img/sch_lipo.gif)) umrechnen dass ich das ganze mit dem 3,3V-Board bauen kann?
Die Kondensatoren sind dann wohl 103er mit 10nF. Aber welche Dioden bräuchte ich?

Elektro-Andi
18.11.2012, 22:48
Hallo,
melde mich auch mal wieder.
Habe einen Arduino- Spannung(bis 33V) / Strom(bis 100A) Sensor gebaut. (Allegro Stromsensor).
Nach einigen Wochen im Quadrokopter möchte ich ihn nicht mehr missen. Er schlägt bei 1/4 der Akkukapazität oder Unterspannung Alarm. Das gibt einem schon viel Sicherheit.
Materialkosten unter 30 EUR.
Das werde ich warscheinlich in die meisten Flieger + Schiffle einbauen.
Dazu muss er noch kleiner und billiger werden.

Ansatz:
1. Statt Arduino Pro mini, einen ATtiny85 mit Arduino programmiert ! Ein einfacher Spannungssensor mit ATtiny habe ich schon in Betrieb.
ATtiny 45/85 Programmierung mit Arduino geht und macht Spass: high-low Tech ATtiny Arduino Turtorial (http://hlt.media.mit.edu/?p=1695)
2. Statt Allegro Sensor einen SMD Shunt 0,5mOhm pro 30A und ein Ina138.
Das drückt die Materialkosten auf unter 10 EUR
Grüße
Andi


Prototyp Spannungssensor mit ATtiny45 / Android. Optional Temperatursensor TMP36 steckbar. Unterspannungswarnung mit Jumper einstellbar.
Läuft auf 3,3V.
Einfach zu Bauen :-)
908079

908080



Prototyp Strom/Spannung/Kapazität-Sensor mit Arduino Pro Mini und Allegro Stromsensor 100A:
908101

908102

908103

Elektro-Andi
20.11.2012, 22:28
Hallo,
hier noch der Schaltplan meines einfachen Spannungs + Temperatursensors auf ATtiny/Arduino. Siehe oben.
R1,R2 = 470 Ohm
R3 = 47k
R4 = 4,7k
R5 = 100k
C1,C2 = 100nF
C3 = 2,2uF ~6,3V
3,3V LowDrop Spannungsregler

Dies soll zum Nachbauen anregen. Er ist ohne SMD schon schön klein, in SMD wäre er winzig :-)
Keine Gewähr oder Funktionsgarantie.
Bei Fragen einfach PN

Grüße
Andi

Hermann2349
21.11.2012, 21:41
Hallo Leute

Am 16.11.2012 soll ja von Graupner was kommen?Zwar nur für 1-4 Zellen aber besser wie nichts. ;)

Best.-Nr. 33630
Preis: 12,70 €


Gruß
Hermann

Wurde schon wieder verschoben.Jetzt 19.12.2012 :cry: :cry:

Grüße
Hermann