Willkommen Gast. Bitte einloggen oder registrieren.
September 17, 2019, 18:55:51
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Alles rund ums Modden
| |-+  Elektronik, Elektrik (Moderator: TzA)
| | |-+  Neue Tutorials bzw. Updates der vorhandenen?
  « vorheriges nächstes »
0 Mitglieder und 1 Gast betrachten dieses Thema.
Seiten: 1 2 3 4 5 6 [7] nach unten Drucken
Autor Thema: Neue Tutorials bzw. Updates der vorhandenen?  (Gelesen 66290 mal)
hackspider
Wakü-Poseidon

*

Karma: +4/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 412



Profil anzeigen
Re: Neue Tutorials bzw. Updates der vorhandenen?
« Antwort #90 am: Juli 1, 2014, 23:39:09 »

Hi,

das ist eigentlich eine ausgezeichnete Frage. Einerseits hat man - von der Auflösung abhängige - Rohwerte (bei 8bit 0-255 bei 10bit 0-1023). Diese könnte man ausgeben. man muss halt die Auflösung des ADCs kennen.

Alternativ kann man die Rohwerte in physikalische Größen umrechnen: z.B. Rohwert 0 entspricht 0V, 255 entspricht 12V. Das ist allerdings abhängig vom eingesetzten Spannungsteiler und den Min und Max Werten. Das ist auch noch relativ einfach solange die Umrechnung linear ist. Komplexer wird es wenn man den ADC dazu verwenden will Temperaturen mit NTCs zu messen die dann eine Kennline (Polynom) benötigen.

Prinzipiell kann man die Berechnung im ADC-Modul oder auf dem zentralen µC machen.

Um hier weiter zu kommen können wir mal physikalische Größen sammeln die Sinn machen zu messen:

  • Spannung 0-5V
  • Spannung 0-12V
  • Spannung 0-3.3V
  • Spannung 0-7V
  • Temperatur 0-100GradC

Noch mehr?

Implementierung könnte irgendwie so aussehen (Wenn die Umrechnung auf dem ADC-Modul erfolgen soll):
Code:

/* Commands */
enum I2C_Commands
{
    SET_CONFIG = 0,
    READ_CONFIG,
    READ_VALUE,
    NUMBER_OF_COMMANDS
}

/* Supported Configurations */
enum I2C_Configurations
{
    CONFIG_5V = 0,
    CONFIG_12V,
    CONFIG_3V3,
    CONFIG_7V,
    CONFIG_NTC_5K,
    CONFIG_RAW,
    ....,
    NUMBER_OF_CONFIGURATIONS
}

[...]

i2c_read_buffer(&buffer[0]);

switch (buffer[0])
{
case SET_CONFIG:
    {
        uint8_t channel = buffer[1];
        I2C_Configurations config = buffer[2];
        set_channel_configuration(channel, config);
    }
[...]
case READ_VALUE:
    {
        uint8_t channel = buffer[1];
        I2C_Configurations config = getConfig(channel);
        uint8_t adcValue = getADCValue(channel);

        uint8_t physValue = getPhysValue(config, adcValue);
       
        buffer[0] = config;
        buffer[1] = physValue;

        i2c_write_buffer(&buffer[0]);
    }
[...]
}
Alles nur Pseudocode, da fehlt noch einiges (allen voran Größenbehandlung der Puffer). Da liegt auch kein Design dahinter, soll also nur zum Verständnis der Abläufe/Berechnungen dienen also bitte nicht auf die Goldwage legen (ist auch schon spät).

Also Protokoll wäre dann folgendes

SetConfig (Main µC -> ADC Modul):
Command | Channel | Config (je 1 Byte)

ReadValueRequest (Main µC -> ADC Modul):
Command | Channel (je 1 Byte)

ReadValueResponse (ADC Modul -> Main µC):
Config | Value (je 1 Byte -> sollte eher mehr sein beim Value)

Für die anderen Befehle muss man sich das noch überlegen (und die 3 ggf. noch anpassen).

--> Langsam können wir auch über ein gemeinsames Repository bei GitHub, Gitorious, Sourceforge oder google code gedanken machen.

Viele Grüße
    hackspider

PS: Beim drüberlesen merke ich grade, dass das nicht mein bester Beitrag ist. Ich hoffe es ist dennoch soweit verständlich.
Gespeichert

OlafSt
Global Moderator

*

Karma: +12/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2137


Master of STLCD and LISA III


Profil anzeigen
Re: Neue Tutorials bzw. Updates der vorhandenen?
« Antwort #91 am: Juli 2, 2014, 09:17:10 »

Warum nicht einfach die Roh-Werte des ADC auslesen und die Umrechnung auf dem Client machen ? Der kann das
A) wesentlich schneller
B) belastet man damit nicht die Schaltung und dessen µC und
C) brauchts dan später keine Routinen zum einstellen, wie der µC denn später die ADC-Werte umrechnen soll.

Das weiß der Client doch ohnehin, dann kann er das auch umrechnen Wink Davon abgesehen: Flexibler gehts auch nicht mehr, könnte ja sein, das ich diese Schaltung mal für die Temperatur-Überwachung in einem LKW brauche. Dann ist die Sammlung an Größen, die man so messen kann, Makulatur (24V-System im LKW, völlig anderer Sensor in Benutzung).
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Seiten: 1 2 3 4 5 6 [7] nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.063 Sekunden mit 19 Zugriffen.
© 2001-2009 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!