www.mikrocontroller.net

Forum: PC-Programmierung PIC16F876---> MAX233--->RS232--->PC--->C#


Autor: Serg Mikronet (miknet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe eine Frage zu ADC und  Visualisierung der Meswerte auf meinem 
PC
mit C#.

Ich messe Spannung mit PIC16F876 und möchte die Messwerte über Max233 
anzeigen lassen.

Meine Anwendung zeigt sehr komische Werte wie:

bei einer Spannung von 5 V -->   3,72E-294
-----------------  von 3,72 v--> 5,37E-299
-----------------  von 2,42 V--> 7,74E-304

weisst jemand was es seien kann?

wäre dankbar für jede info!

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Big Endian, Little Endian!?
MSB/LSB vertauscht!?

Autor: Serg Mikronet (miknet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich empfange die Daten mit:

int count = serialPort1.BytesToRead;
                byte[] ba = new byte[count];
                serialPort1.Read(ba, 0, count);

dann konvertiere in double, dann werden die Werte in richTextBox 
angezeigt.

Muss ich noch irgendwelche Schritte dazwischen durchführen?

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, mal ein bischen mehr Infos rüberwachsen lassen! Das ist eine 
Frechheit! Wenn Du eine vernünftige Antwort haben willst, dann gebe Dir 
bei der Fragestellung bitte ein bisschen mehr mühe!

Schaltung?! Source-Code?!

Autor: Serg Mikronet (miknet)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
mit dieser Methode empfange ich die Daten:

private void Erfassen()
        {
            try
            {
                int count = serialPort1.BytesToRead;
                byte[] ba = new byte[count];
                serialPort1.Read(ba, 0, count);


                Double data1 = BitConverter.ToDouble(ba, 0);
                Double data2 = BitConverter.ToDouble(ba, 0);


                richTextBox1.Invoke(new EventHandler(delegate
                {
                    richTextBox1.Text = data1.ToString();

                }));
                label1.Invoke(new EventHandler(delegate
               {
                   label1.Text = data2.ToString();
               }));
            }
            catch { };

anbei noch die Schaltung:

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
dein PIC misst die Spannung als integer-Wert, den du dann in eine 
Spannung umwandelst. Und wie überträgst du dann den Wert ? Mit sprintf 
in eine Text-String umgewandelt ?

gerhard

Autor: Serg Mikronet (miknet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe den PIC in Assambler programiert und dann nch in C.
In beiden Fällen habe ich die falschen Werte erhalten oder mache ich 
noch was nicht ganz richtig.

hier ist main () Funktion aus dem Programm

void main(void)
{
    uns16 a;                // Variablen
    char n;

    //++  Einstellungen des AD-Wandlers  ++++++++++++++++++++++++++++
    ADCON1=0;               // Ganzer PortA als Analog Vdd Vss
    ADON=1;                 // ADC-Einschalten
    ADCS1=1 ;               // Geschwingigkeit der ADC
    ADCS0=0 ;
    ADFM=1;                 // Rechts Ausrichtung
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    TRISC=0b.1011.1100;     // RC6>TX, RC7>RX
    InitUSART();            // Hardwareschnittstelle des PICs einstellen

    while(1)                // Ganzes Programm ist Endlosschleife
    {
        while(!RCIF);       // Warte auf Empfang
        n=RCREG;            // Empfange Kanalnummer
        a=ADC(n);           // AD-Wandlung
        while(!TXIF);       // Prüfen, ob Sender frei ist
        TXREG = a.low8;     // Niederes Datenbyte senden
        while(!TXIF);       // Prüfen, ob Sender frei ist
        TXREG = a.high8;    // Oberes Datenbyte senden

    }                       // Ende der Schleife
}                           // Ende des Hauptprogramms

Gruß
Serg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.