- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Anfängerfrage zu Sensoren

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.03.2005
    Ort
    Ulm
    Alter
    36
    Beiträge
    519

    Anfängerfrage zu Sensoren

    Anzeige

    Praxistest und DIY Projekte
    Abend

    Also ich habe ein kleines Problem, für euch sicher kein Problem

    Ich habe einen Sensorik, die sendet an meinen Mega8 ein 5V Signal und auf dieses Signal soll der Mega8 reagieren.

    Wäre das so korrekt umgesetzt?

    Code:
    $regfile = "m8def.dat"                                      'ATmega8
    $crystal = 3686411                                          'Quarz: 3686411 Hz
    
    
    Ddrc = &B00000000
    Ddrd = &B11110000                                           'Pin PD4 bis PD7 als Ausgänge
    
    Do
      Portd.4 = 0                                               
      Portd.5 = 0
    
       If Pinc.0 = 1 Then                                       'Sensorik
    
         Portd.4 = 1
         Portd.5 = 1
         Waitms 2000
       End If
    
    Loop
    End
    Denn bei mir funktioniert das irgendwie nicht richtig...wenn ich hier das ok bekomme dass es funktionieren sollte kann ich davon ausgehen dass meine Elektronik nichts taugt.

    Gruß
    Foooob

    EDIT: Und noch eine Frage...erkennt ein Mega8 eigentlich auch Eingangsspannungen die nicht 5V sondern 3,6V haben?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    In der DDR für D gibst du 0 für einen Ausgang an.
    Im Programm sind D.4 und D.5 Ausgänge.
    C.0 ist ein Eingang. Ist mit der DDR aber auch mit 0 eingestellt.

    Ich behaupte mal, da ist ein Denkfehler drin.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    01.01.2004
    Beiträge
    96
    Zitat Zitat von Marco78
    In der DDR für D gibst du 0 für einen Ausgang an.
    Er setzt die Ausgänge mit eins, was richtig ist.

    Den Fehler würde ich eher am Eingang suchen. Am Eingang muß ein sauberes Signal anliegen. Die 3.6V kann der AVR schon als 1 erkennen.

    @Foooob: Es würde helfen, wenn Du den Sensor und seine Beschaltung hier etwas näher beschreibst.

    Gruss
    Frank

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ddrd = &B11110000 'Pin PD4 bis PD7 als Ausgänge
    Geht das bei PD7 los und endet mit PD0???

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    42
    Beiträge
    170
    @marco78:
    ja, genau so würde ich schon sagen; Aussage stimmt also mit Kommentar überein.

    @Fooob:
    Sehe eigentlich keinen Fehler im Programm, aber probiers mal mit PullDown 10k oder sowas. Liegt wahrscheinlich eher am elektronischen Teil.

    3,6 Volt reichen sicher für einen HIGH-Pegel.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.03.2005
    Ort
    Ulm
    Alter
    36
    Beiträge
    519
    Okay, ich dachte die Sache wäre leichter und es würde sich nur um einen Denkfehler handeln.
    Um das im vollen Ausmaß zu erklären muss ich den Quellcode minimal ändern.


    Code:
    $regfile = "m8def.dat"                                      'ATmega8
    $crystal = 3686411                                          'Quarz: 3686411 Hz
    
    Ddrc = &B00000000
    Ddrd = &B11110000                                           'Pin PD4 bis PD7 als Ausgänge
    
    Do
      Portd.4 = 1                                               
      Portd.5 = 0
      Portd.6 = 1
      Portd.7 = 0
    
       If Pinc.0 = 1 Then                                       'Sensorik
    
         Portd.4 = 0
         Portd.5 = 0
         Portd.6 = 0
         Portd.7 = 0
         Waitms 2000
       End If
    
    Loop
    End
    Dürfte nichts an der nun bewiesenen Korrektheit des Programms ändern.

    Nun mein Problem.
    An PORTD.4 bis 7 liegen 2 Getriebemotoren.
    Wie man sieht sind die Motoren zunächst in Bewegung und sollen dann bei einem High-Signal auf PIN C0 stoppen.

    In der Praxis zeigt sich aber folgendes: Die Motoren laufen am Anfang beide korrekt. Kommt nun das High-Signal stoppt aber nur einer der beiden Motoren. Den anderen lässt das komplett kalt.
    Aber an was kann das liegen wenn der Motor der nicht mitzieht am anfang mitanläuft. Wenn ich den Motor im Quellcode deaktiviere dann läuft er auch am Anfang nicht an. Er reagiert nur auf die If-Bedingung nicht. Die lässt ihn kalt. Der andere Motor hingegen macht alles was man ihm sagt.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    42
    Beiträge
    170
    - Hast vielleicht einen Timer mit dem Port PD4 oder PD5 belegt?
    oder bertiffts die anderen Ports?

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.03.2005
    Ort
    Ulm
    Alter
    36
    Beiträge
    519
    Dies ist der gesamte Quelltext. Ich habe keine timer oder andere Doppelbelegungen gemacht.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Wie sind die Motoren den angeschlossen? Hast du einen Schaltplan dazu?
    Sie sind ja sicherlich nicht direkt an die Pins angeschlossen? Hast du die Schaltung mal überprüft?
    Hast du an den Pins mal Spannungen gemessen?

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.03.2005
    Ort
    Ulm
    Alter
    36
    Beiträge
    519
    Ahhh ich hab den Fehler...
    Ich hab die PWM Leitung mit einem zur Steuerung verwechselt. Deswegen reagierte der Motor nicht aber bewegte sich trotzdem...

    Danke für die Hilfe

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test