Forum: Analoge Elektronik und Schaltungstechnik Umwandlung von Variablen mit Vorzeichen nach ohne Vorzeichen


von Umwandlung von (Gast)


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?

von Gerald M. (gerald_m17)


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.

: Bearbeitet durch User
von Umwandlung von (Gast)


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.

von Umwandlung von (Gast)


Lesenswert?

Gerald M. schrieb:
> int=0 sollen 0,5V

ne, 1,5 Volt, sorry, wenn ich mich da verschrieben hab.

von Gerald M. (gerald_m17)


Lesenswert?

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
Noch kein Account? Hier anmelden.