Waage Programmieren



  • Hallo Zusammen,

    wir müssen in der Arbeit eine Waage mit dem Atmega 644A und dem Sensor FX 1901 bauen.
    Da ich bei dem ganzen C++ noch nicht so richtig durchblicke bräuchte ich mal eure Hilfe.

    für die AD Wandler hab ich Headerdatein die funktionieren.

    Hat jmd zufällig eine solche Waage schon einmal gebaut und programmiert? Oder kann mir auch so helfen.

    Vielen Dank für die Hilfe



  • logitech schrieb:

    Da ich bei dem ganzen C++ noch nicht so richtig durchblicke bräuchte ich mal eure Hilfe.

    Klar, was willst denn wissen?



  • Also ich brauch ja eine Schlatung die die änderung des Fx1901 verstärkt, da der microcontroller ja erst ab 4,8 mV reagiert.

    Ich hab mit überlegt es über einen OP zu verstärken, weis aber dann nicjt wie ich dir Schalung weiter verdrahten soll.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Themen rund um die IT verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Das ganze muss mit dem FX1901 erstellt werden daher bringen mich die Links nicht wirklich weiter.



  • Das sollte nur eine Anregung sein diese und ähnliche Frage dort zu posten. Wir können solcherlei Fragen nicht einfach von hier ins mikrocontrollerforum verschieben..;)
    (Fragen zu Waagen gab es da schon sehr viele und auch gute Antworten dazu)



  • logietech schrieb:

    Das ganze muss mit dem FX1901 erstellt werden daher bringen mich die Links nicht wirklich weiter.

    Komme wieder, wenn du eine Frage zu einem Programmierproblem hast, aber bei Elektronik und der Verstärkung von elekronischen Signalen kann dir hier keiner weiterhelfen, denn wir sind hier Programmierer und Softwareentwickler und keine Elektroniker.

    Daher ist der Verweis auf das andere Forum richtig.

    So als Elektornik Laie, aber interessierter, würde ich dir raten, einen Kondensator zu dem Drucksensor zu schalten und damit einen Strom hinter dem Kondensator zu verstärken, der dann dahinter einen Transistor schaltet und somit ein Signal an den Mikrocontroller weiterleitet.

    Das ganze sollte dann ungefähr so aussehen:
    http://www.tinyimage.de/jpeg.php?img_id=416027

    S ist dein Switch
    µC dein Mikrocontroller
    C1 ein Kondensator
    Vin ne Spannungsquelle die so gewählt ist, dass der Transistor durchschaltet, wenn er vom Kondensator ein Signal kriegt.

    Auch zu sehen sind noch eine Diode, 2 Widerstände und ein Transistor.
    Die Schaltungssymbole solltest du kennen.



  • Wie der µC genau beschaltet sein muss, habe ich nicht eingezeichnet.
    Du musst aber in ein Input mit dem Signal rein.



  • Hey,

    also die Schlatung die wir jetzt gebaut haben, müsste soweit passen.

    jetzt fehlt noch die Programmierung.
    Bis jetzt bin ich soweit das der Microconroller den Wert des Sonsors auslesen kann.
    Hierbei springt der ADC Wert zwischen den Werten 571 und 572.

    Ich weiß nur nicht wie ich jetzt weiter machen soll.
    Ich sollte ja jetzt irgendwie versuchen, das dieser Wert 0 g entspricht. und dann je nach gewicht die Zahl steigt. Nur hab ich dazu gar keinen Plan mehr.

    mein Programm bisher sieht folgendermaßen aus:

    #define F_CPU 14745600
    #include <avr/io.h>
    #define i2c_clock 100000
    #include "I2C.h"
    #include "I2C_LCD.h"
    #include "stdio.h"
    #include "ADC.h"
    #include <util/delay.h>
    #include <avr/interrupt.h>

    #define d2 0x04

    char input;
    char lcd_zeile[13];

    int ADC_ausgabe (void)
    {
    return ADC;
    }

    int main(void)
    {
    float multiplikator;
    float zwischenergebnis;
    float weight;
    AnDi.aktivieren();

    multiplikator = 4.98 / 1024;

    I2C.aktivieren(F_CPU, i2c_clock);
    Display.aktivieren(0);
    sprintf(&lcd_zeile[0], " Gewicht");
    Display.write (false, 0, &lcd_zeile[0]);
    sprintf(&lcd_zeile[0], " ");
    Display.write (false, 2, &lcd_zeile[0]);

    while (1)
    {

    AnDi.lesen (1);
    weight = ADC;

    Display.write (false, 1, &lcd_zeile[0]);
    sprintf (&lcd_zeile [0], " %f g", weight);

    _delay_ms(500);
    }
    }



  • logitechnisch schrieb:

    Ich weiß nur nicht wie ich jetzt weiter machen soll.
    Ich sollte ja jetzt irgendwie versuchen, das dieser Wert 0 g entspricht. und dann je nach gewicht die Zahl steigt. Nur hab ich dazu gar keinen Plan mehr.

    Warum beauftragt man dich mit so einer Aufgabe, von der du offensichtlich nichts verstehst?

    mein Programm bisher sieht folgendermaßen aus:

    Das ist kein C++, sondern C.
    Außerdem, benutze bitte die Formatierfunktion.



  • Ja, das versteh ich auch nicht.

    aber ist bei uns in der Ausbildung ganz normal!

    Hat nu jmd ne Idee, oder kann keiner weiterhelfen?


Log in to reply