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
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.
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)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.