Ich beabsichtige die Umwandlung eines vorzeichenbehafteten int16_t-Elements in ein uint16_t-Wert vorzunehmen. Das Signal soll dazu verwendet werden, um ein Gerät anzusteuern, dass einen Signalpegel von 0V bis 3,3Volt liefert. Wenn der uint-Wert den Wert Null hat, dann liefert das Gerät 0V, bei 65535 wird ein Singalwert von 3,3 Volt erzeugt. Hat der int16_t-Wert eine Null, dann soll 1,5 Volt (nicht 1,65 Volt) haben. Leider hab ich keine Idee, wie man das umrechnen kann. Ich hab zunächst gedacht, dass ich ein Umwandlungsoffset berechnen muss. Um 1,5 Volt zu kriegen, müsste man den uint16_t-Wert haben, wo ich aber noch keine Idee habe, wie ich den berechnen kann. Kann man das einfach mit dem Dreisatz machen, also: 3,3 = 65535 1,5 = x x = 1,5*65535/3,3 Und dann würde ich machen: uint16_t_value = int16_t_value+x Wäre das richtig?
Was soll denn der signed integer machen? Die Ansteuerung ist doch mit einem uint viel logischer. Zum umrechnen hast du uns eine Information vorenthalten, die unbedingt nötig ist. Du hast gesagt bei int=0 sollen 0,5V herauskommen. Das ist OK. Doch wie möchtest du 3,3V ausgeben? Der Bereich nach oben ist bei einem int nach oben und unten gleich groß. Doch dein Wert muss nach oben einen größeren Wert annehmen können wie nach unten. Soll das linear umgerechnet werden oder soll ein Teil des negativen Bereiches für den positiven genutzt werden? Du siehst, ein signed integer macht hier wenig Sinn.
:
Bearbeitet durch User
Das weis ich ja noch nicht so genau, wie ich das ausrechnen soll. Ich möchte gerne mit Vorzeichengrößen Rechnen, weil ich dann auch negative Werte zulassen kann und das dann mit den Reglerparametern einfacher ist. Aber dort kann ich nur Werte im Bereich von 0-3 Volt gebrauchen, nicht 3,3 Volt. Bei 1,5 Volt ist da dann genau die Mittelstellung, die Maximalstellung wird bei 3,0 Volt erreicht, also darf ich nicht höer als 3,0 Volt kommen.
Ok, 0-3V geht. Hierfür musst du die Geradengleichung lösen: Y(x)=m*x + c Y ist deine gewünschte Spannung, x der Bitwert. Du hast nun die erforderlichen 2 Bedingungen genannt: Y(32767)=3 und Y(0)=1,5 Mit Y(-32768)=~0 kannst du deine Koeffizienten überprüfen.
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.