Umwandlung von Variablen mit Vorzeichen nach ohne Vorzeichen

Gast #4022004
Lesenswert?
• ▲
▼
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?
#4022018
Lesenswert?
• ▲
▼
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.
Gast #4022030
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren