Forum: Mikrocontroller und Digitale Elektronik Hystere-routine mit Psoc -µC


von Stefan Weber (Gast)


Lesenswert?

Hallo Leute


Vielleicht hat jemand schon mit dem Psoc-µC  gearbeitet.
Ich Bin ein neuling in der Entwickung mit Psoc und habe dazu paar 
fragen.

ich versuche ein Signal am Ausgang des µC abhängig von dem am Eingang 
eingelegte Spannung(mit Poti) zu steuern. Die gemessene Analog spannung 
wird intern mit eiem ADC umgewandelt.
Am Anfang wird der startwert(Ini_wert) ermittelt und gespeichert. Danach 
erfolgt in einer Endlossschleife weitere Messungen(Mess_wert).
Die Differenz aus Mess_wert und Ini_wert wird gebildet. Nach 
überschreiten einem Schwellewert schaltet  sich der Ausgang (Hier als 
Beispiel LED). Der LED bleibt an bis der untere Schwellewert  nicht 
überschritten wird ansonsten aus.

ich möchte also ein Code implementieren(in C) zur steuerung diese LED.

In welche Form wird er ADC-ergebnis zurückgegeben (dezi, hexa, 
binär...)?


Kann mir Jemand helfen mit einem Beispielcode in C für ein Psoch?.
Der ADC ist ein Delta sigma umsetzer.

Ich bin für jede Hilfe sehr Dankbar.

Lg
Sebastian

von A. B. (funky)


Lesenswert?

schau doch mal in die datasheets der einzelnen usermodule.
da sind beispielcodes dabei wie man den jeweiligen ADC/DAC anspricht.

die hysterese sind dann nur noch paar if abfragen

von Stefan Weber (Gast)


Angehängte Dateien:

Lesenswert?

Ja danke

ist schon gemacht , aber ich weiß nicht genau in welcher format(hex oder 
bin oder dezi) das Ergebnis zurückgegeben wird,  sodass ich in der 
If-Anweisung vergleichen kann.

Anbei habe ich code abschnitt zum Lesen des Startwerts(readADstart) und 
die Messwerts(readAD).
Der startwert resultiert aus der Mittelung aus 255 Messungen.

Danke für weitere Imputs.

von Tobias Müller (Gast)


Lesenswert?

heeeeeee   Leute
wieso keiner ist bereit dieser Junge zu helfen.

ich kenne mich nicht so gut mit Psoc , sonst ich hätte dich geholfen 
Sebastian.

lg

von spess53 (Gast)


Lesenswert?

Hi

>ich kenne mich nicht so gut mit Psoc , sonst ich hätte dich geholfen
>Sebastian.

Ich auch nicht.

> aber ich weiß nicht genau in welcher format(hex oder
>bin oder dezi) das Ergebnis zurückgegeben wird, ....

Wenn du den ADC meinst, bei einem 12Bit-ADC kommt ein Wert zwischen 0 
und 4095 zurück. Wie du den schreibst ist egal.

MfG Spess

von Sebastian weber (Gast)


Lesenswert?

Danke Spess

ich versuvche mit diesem ERkenntniss schon mal vorran zu kommen

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mir erschließt sich die Logik deines Programms nicht recht. Du summierst 
in 'ergb' auf und gleichzeitig teilst du 'ergb' durch 'counter' in einer 
Integeroperation?

Soll das den Mittelwert über 255 Werte darstellen?

Was geht denn nicht, wenn du den Code ausführen läßt?

Wo ist der Code für die Ansteuerung der LED?

In den Beispielen bei PSoC gibt es auch noch den Hysterese-Komparator 
als extra Modul implementiert. Vielleicht ist das eher was für dich.


Und wieso heißt du oben Stefan und unten Sebastian? Nur mal so als 
Frage.


Gruß -
Abdul

von Tach (Gast)


Lesenswert?

kannst du nicht dein Code ein bisschen mehr kommentieren... würde es 
vereinfachen

von Stefan weber (Gast)


Lesenswert?

Hi,
Endschuldigung für den vornamen,

mein Bruder war mal kurz hier Online , und ich habe vergessen 
zurückzustellen.


ok.  ist das nicht die Mittelung über diese 255 Messungen ?   oder habe 
ich da was falsch gemacht.
ich addiere auf 0, 255 mal den Messwert und dann teile ich das 
endergebnis durch 255. Meiner Meinung nach ist sinnvoll um den 
gemittelte Wert zu haben,  oder sehe ich es flach !!!!!


Danke
Stefan

von Stefan weber (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der kommentierte Code angehängt

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mal so als Beispiel:
Am Anfang ist ergb=0, dann liest du den ADC und der liefert dir maximal 
4095. ergb und ADC werden addiert zu ergb. Dann teilst du ergb durch 
counter und der ist da 255. Bereits bei deiner ersten Messung kann der 
Wert also nicht größer 2^12/2^8 werden. Aus deinem 12Bit Wandler wird 
also ein 8Bit Wandler!

Ich vermute, du willst ein Tiefpaßfilter in Software realisieren. Das 
ist einfacher in Hardware als RC-Glied zu machen, außer deine 
Meßabstände ergäben unrealistisch große Werte für R und C. Nebenher 
erschlägst du damit auch gleich mögliche Transienten im Eingangssignal, 
die der ADC fehlerhaft übersetzen könnte, denn der hat auch ne 
Grenzfrequenz! Stichwort Aliasing.

Die ganze Sache hat aber mit der Hysterese und der Ansteuerung der LED 
nix zu tun!

Trenne beide Codeabschnitte und setze für den zweiten Teil (Komparator) 
fiktive Werte über Variablenzuweisung und teste den zweiten Teil dann 
komplett getrennt.


So wie sich das Problem darstellt, hat es auch mit PSoC ansich nichts zu 
tun. Ist ein reines C-Problem.


Gruß -
Abdul

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.