Forum: Mikrocontroller und Digitale Elektronik Float via UART an PC senden


von W. M. (muhh)


Lesenswert?

Hi Leute,

ich steuer ein PWM Signal über meinen PC.
Bei jedem Verändern der Pulsweite schickt der MC die Prozentzahl der 
Pulsweite an den PC. Jetzt möchte ich aber eine extrem feine Regulierung 
haben und möchte deshalb zwei Nachkommastellen darstellen.

Geht das so ohne weiteres und wenn ja, wie?

Grüße muhh

von Jens M. (Gast)


Lesenswert?


von Georg G. (df2au)


Lesenswert?

Einheiten sind eine Sache der Vereinbarung zwischen beiden Seiten. Wenn 
du in deiner Stammkneipe "ein Bier" bestellst, weiß der Wirt, dass du 
ein Maß willst, weil du aus Bayern bist. Und dein Kumpel aus Schläfrig 
Holzbein bekommt bei gleicher Bestellung einen Finkennapf.

Gleiche Lösung bei deinem Problem: Übergib nicht Prozente als Einheit 
sondern Zehntausendstel. Damit bleibt es eine Festkommazahl und ist in 
16 Bit darstellbar.

von Ralph (Gast)


Lesenswert?

Na ob das wirklich eine Auswirkung hat wenn du noch 2 Kommastellen 
mitnimmst.

Ich hab da so meine Zweifel

Aber um es einfach zu machen.
Multipliziere deine % Zahl mit 100 ( besser mit 128) und übertrage als 
Ganzzahl.

Wenn du wirklich mit Float arbeiten willst, machst du dort eine Division 
durch 100 ( oder einfach um ein paar Bits schieben wenn du die 128 
verwendest)

von Wolfgang (Gast)


Lesenswert?

Georg G. schrieb:
> Gleiche Lösung bei deinem Problem: Übergib nicht Prozente als Einheit
> sondern Zehntausendstel.

Der µC hat wahrscheinlich sowieso nichst besseres zu tun, als von 65536 
auf 10000 umzunormieren, weil die Arbeit sowieso die Hardware macht und 
er sonst nur in der Warteschleife rumhängt oder schläft.

von Taugenichts (Gast)


Lesenswert?

Ich wuerd erst mal testen, welche Ausfloesung das Servo denn bringt. Und 
zwar durch Anfahren von beiden Seiten. Dh, man befestigt einen kleinen 
Spiegel an der Achse, und leuchtet mit einem Laser drauf. Den Punkt an 
der 5m entfernen Wand markiert man. Dann macht man ein paar 
Postions-Schritte nach links und zeichnet alle Punkte auf. Dann ein paar 
Schritte nach rechts. Die kleinsten Schritte sind so sichtbar. Dann 
N-Schritte nach links und zurueck. Was ist die Abweichung? Dann 
N-Schritte nach rechts und zurueck. wie gross ist die abweichung. Ich 
hab das mal mit ein paar Servos gemacht und kam auf eine Aufloesung von 
0.5 oder 2 Grad. Ich kann mich grad nicht erinnern. Der Wert kann auch 
unterschiedlich nach Hersteller und Typ sein.

Float waere total uebersteuert, denn 5 Stellen kann das Servo eh nicht 
aufloesen. Allenfalls 3 Stellen, entsprechend Promillen. Ich wuerd 
einfach 2 Byte uebertragen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Angehängte Dateien:

Lesenswert?

Was will man da mit float?!?!?
Das PWM Register wird ja warscheinlich nur Integerwerte annehmen.
Also diese 1zu1 übern UART schubsen.

Ansonsten eben die üblichen verdächtigen float zu String und String zu 
float Funktionen benutzen.

Im Anhang sogar was aufm Silbertablett für Integerübertragung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.