Seite 1 von 1

GPIO Board - analoge Signale auslesen

Verfasst: Donnerstag 28. Dezember 2023, 23:12
von Kampfgummibaerlie
Ich versuche derzeit einen Potentiometer mit einem "Wandler" auszulesen.

Der Potentiometer ist richtig angeschlossen (eine LED ist damit dimmbar).
Ich habe das Problem, dass ich in meinem Python-Programm jedoch nur zwei Werte auslesen kann (0 und 1).

Ich würde gerne mehr Werte auslesen, als diese zwei.

Mein Fall wird folgend beschrieben:
1.: Ich habe fünf Maschinen
2.: Ich möchte mittels dem Potentiometer eine von den fünf Maschinen auswählen können
3.: Der Knopf ist auch bereits Funktionstüchtig.

Der Wert springt in etwa bei der Hälfte von 0 auf 1 um.
Versuche, den Wert mit einem Faktor hoch zu skalieren oder anderes ändern die Ausgabe von 0 und 1 auf 0 und 100 o.ä.

Muss ich hier mit (Habe Erfahrungen mit dem Arduino sammeln können) einer ähnlichen Map-Funktion arbeiten?

Habe richtig Freude an der Elektrotechnik gefunden (bisher zumindest xD)

Danke im Voraus ;)
Kampfgummibaerlie

Re: GPIO Board - analoge Signale auslesen

Verfasst: Donnerstag 28. Dezember 2023, 23:46
von Dennis89
Hallo,

wie hast du den Poti denn genau angeschlossen und welcher ist es?
Wie sieht denn der Code aus?
Welcher Knopf?

Es gibt einige Tutorials zu Potentiometer und Raspberry Pi(oder hast du einen Pico?), falls du einem gefolgt bist, bitte verlinken.


Grüße
Dennis

Edit: Vielleicht hilft dir die Seite weiter, sah auf den ersten Blick fürs Verständnis nicht schlecht aus:
https://newbiely.com/tutorials/raspberr ... entiometer

Re: GPIO Board - analoge Signale auslesen

Verfasst: Donnerstag 28. Dezember 2023, 23:56
von Kampfgummibaerlie
a) Ein Dreh-Potenziometer, wenn das mehr aussagt ;)
b) nachdem ich nur 0er und 1er auslese, habe ich nicht viel weiter geschrieben...

aber hier ein paar Zeilen:

Code: Alles auswählen

import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

GPIO.setup(12, GPIO.IN)

while True:
	print(GPIO.input(12))
	time.sleep(0.5)
EDIT: Es handelt sich um einen Raspberry Pi 4 und ich habe das ganze eigenständig zusammengesteckt (kein Guide)...
nur eckdaten ergoogelt, aber keinem Guide 1:1 gefolgt...

Re: GPIO Board - analoge Signale auslesen

Verfasst: Freitag 29. Dezember 2023, 00:03
von Dennis89
Schau dir mal den Link an.

Hast du einen Analog-to-digital-Converter verbaut oder wie ist der Poti angeschlossen?

Der Pin hat eine bestimmte Spannung (kenne den Wert nicht sicher auswendig), ab dem er von Low zu High wechselt und du stellst mit deinem Poti gerade die Spannung von dem einen in den anderen Bereich. Da kann so eigentlich nicht mehr wie 0 und 1 raus kommen.

Grüße
Dennis

Re: GPIO Board - analoge Signale auslesen

Verfasst: Freitag 29. Dezember 2023, 00:03
von __deets__
Der Pi hat keine analogen Eingänge. Ohne einen ADC wird’s nicht gehen.

Re: GPIO Board - analoge Signale auslesen

Verfasst: Freitag 29. Dezember 2023, 00:11
von Kampfgummibaerlie
Ich habe mehrere PCF8591 bei mir... reichen diese aus?

Sorry, wenn ich mich ahnungslos verhalte ;)

Re: GPIO Board - analoge Signale auslesen

Verfasst: Freitag 29. Dezember 2023, 00:17
von Dennis89
Einer müsste reichen. Der kann maximal 3,3V Input und stellt den Bereich von 0-3,3V in einem Bereich von 0-255 dar:
https://www.makershop.de/download/YL_40_PCF8591.pdf

Dann hast du fünf "51"er-Bereiche für die Ansteuerung deiner 5 Maschinen.


Grüße
Dennis

Re: GPIO Board - analoge Signale auslesen

Verfasst: Sonntag 31. Dezember 2023, 00:45
von Kampfgummibaerlie
Soda, nachdem meine Quelle ein Buch ist, kann ich hier nur schwer einen Link vergeben.

Ich habe das Problem gelöst, mein Fehler war, dass ich den GPIO-Pin nicht im Vorhinein als Input oder Output deklariert habe.
Der Rest funktioniert, einfach das PCF8591 entsprechend angeschlossen, SCL an Pi SCL(1) und SDA an Pi SDA(1) und den analogen Eingang vom Drehpotentiometer an AIN1 am PCF8591 angeschlossen.
VCC an 3.3Volt angeschlossen und die GND entsprechend geerdet.

Bin sehr froh das Problem gelöst zu haben und bin sogar stolz darauf, die Lösung auf eigenem Wege gefunden zu haben und komme drauf, ich sollte mich wirklich durch mehr solche Praxisbücher arbeiten ^^
In meinem Fall habe ich ein Exemplar von "Raspberry Pi - Handbuch für Einsteiger" ;)

PS: Wieder ausreichend geschafft für heute, Gute Nacht ;D

LG Kampfgummibaerlie

EDIT:
Hier mein Python Code

Code: Alles auswählen

import smbus
import time
address = 0x48
A0 = 0x41
bus = smbus.SMBus(1)

while True:
    bus.write_byte(address,A0)
    value = bus.read_byte(address)
    print(int(value/50))
    time.sleep(0.25)

Re: GPIO Board - analoge Signale auslesen

Verfasst: Sonntag 31. Dezember 2023, 01:39
von __blackjack__
Das `SMBus`-Objekt sollte man am Programmende schliessen und `int()` kann man sich sparen wenn man die ganzzahlige Division macht:

Code: Alles auswählen

#!/usr/bin/env python3
import time
from contextlib import closing

import smbus

ADDRESS = 0x48


def main():
    with closing(smbus.SMBus(1)) as bus:
        while True:
            bus.write_byte(ADDRESS, 0x41)
            print(bus.read_byte(ADDRESS) // 50)
            time.sleep(0.25)


if __name__ == "__main__":
    main()