Autor Wątek: Czy jest na sali pytoniarz?  (Przeczytany 1424 razy)

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Czy jest na sali pytoniarz?
« dnia: 2021-09-03 | 11:39:14 »
mam taki skrypt dla odczyntu analogowego z nakładki rpi od abelectronics:


#!/usr/bin/env python

from ExpanderPi import ADC import time

"""

================================================

ABElectronics Expander Pi | ADC Read Demo

run with: python demo_adcread.py

================================================

this demo reads the voltage from channel 1 on the ADC inputs

"""

adc = ADC() # create an instance of the ADC

# set the reference voltage. this should be set to the exact voltage

# measured on the Expander Pi Vref pin.

adc.set_adc_refvoltage(4.096)

while True: #

read the voltage from channel 1 in single ended mode and display on the screen

print(adc.read_adc_voltage(1,0)) time.sleep(0.5)




Skrypt czyta z kanału nr 1 i tylko wyświetla na ekranie. Ja potrzebuję żeby czytał ze wszystkich kanałów od 1 do 8 i zapisał do jakiegoś pliku żebym mógł potem te dane obrobić w exelu (przeliczyć volty na temperaturę)

Na programowaniu znam się jak świnia na rynku papierów wartościowych a potrzebuję do monitorowania temperatury w kuzniecowie.

Pomoże kto?

Offline r2d2

  • Kornik - Ekspert
  • *****
  • Wiadomości: 627
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #1 dnia: 2021-09-03 | 12:56:25 »
Co prawda nie pisze w pytonie a w c++, ale z prostym kodem mogę cię wspomóc.
Pewnie używasz przykłądu z tego  https://www.abelectronics.co.uk/kb/article/1074/adc-reading-tutorial-on-the-expander-pi
 https://github.com/abelectronicsuk/ABElectronics_Python_Libraries/tree/master/ExpanderPi
Generalne jak wejdziesz na github z tym libem to masz ograniczenie kanałów do dwóch https://github.com/abelectronicsuk/ABElectronics_Python_Libraries/blob/master/ADCDACPi/ADCDACPi.py Idę o zakład, że ze względu na to że ten ichni moduł ma tylko 2 12bitowe adc. A jak wejdziesz w schemat: https://www.abelectronics.co.uk/docs/pdf/schematic-adc-dac-pi-zero.pdf to nie widać żadnego multipleksera który by wybierał kanał.

Skoro kupiłeś ichni 8kanałowy moduł, to pewnie masz użyć innej biblioteki a na github jest przykład z zapisem do pliku:
https://github.com/abelectronicsuk/ABElectronics_Python_Libraries/blob/master/ADCPi/demos/demo_logvoltage.py

Poza tym po co ci excel skoro temperature możesz zrobić w locie. Wystarczy podstawić do wzoru.

PS. ichnie liby w c++ są 30% szybsze.
« Ostatnia zmiana: 2021-09-03 | 13:03:15 wysłana przez r2d2 »

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #2 dnia: 2021-09-03 | 13:11:40 »
Dzięki, ten ostatni link wygląda na to co potrzebuję.

Co do excela to jest to szczyt moich możliwości programistycznych a muszę przełożyć napięcia na charakterystykę termopary K która nie jest liniowa, chociaż w suie dla mojego zakresu temperatur (20-800C)  i dokładności +-5C to można ją uprościć do liniowej

Offline r2d2

  • Kornik - Ekspert
  • *****
  • Wiadomości: 627
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #3 dnia: 2021-09-03 | 13:24:51 »
Wystarczy podstawić do wzoru. Albo jeśli masz punkty z charakterystyki z proporcji możesz se policzyć wynik. Pytanie tylko jaką tę termoparę masz (albo jaka jest jej charakterystyka jeśli ją mierzyłeś).

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #4 dnia: 2021-09-03 | 13:36:47 »
Z przeliczeniem nie problem ważniejsze żeby wpierw logował.
Skrypt który wkleiłem na początku działa dla każdego z kanałów osobno. Ten skrypt do logowania wywala mi jakieś błędy I/O. Może coś trzeba pozmieniać gdzieś nie wiem... muszę przy kompie zasiąść bo na smartfonie to słabo...

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #5 dnia: 2021-09-03 | 13:39:16 »
A... już wiem.
Ja mam Expander Pi a ten skrypt do logowania to ADC Pi...
To jest chyba ten sam chip tylko jak to pożenić żeby użyć skryptu do logowania na Expanderze...

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #6 dnia: 2021-09-03 | 13:48:21 »

Znalazłem w tych demosach skrypt czytajhący 8 kanałów:

https://github.com/abelectronicsuk/ABElectronics_Python_Libraries/blob/master/ExpanderPi/demos/demo_adcread.py

Działa super, tylko jak go zmusić do zapisu do pliku żeby dało się to odczytać?

Offline r2d2

  • Kornik - Ekspert
  • *****
  • Wiadomości: 627
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #7 dnia: 2021-09-03 | 13:50:15 »
No widzisz, teraz jak już wiadomo co to możesz użyć tego kodu:
https://github.com/abelectronicsuk/ABElectronics_Python_Libraries/blob/master/ExpanderPi/demos/demo_adcread.py
Np tak:
#!/usr/bin/env python
from __future__ import absolute_import, division, print_function, \
                                                    unicode_literals

import time
import datetime
import os
import sys

try:
    import ExpanderPi
except ImportError:
    print("Failed to import ExpanderPi from python system path")
    print("Importing from parent folder instead")
    try:
        import sys
        sys.path.append('..')
        import ExpanderPi
    except ImportError:
        raise ImportError(
            "Failed to import library from parent folder")


def main():
    adc = ExpanderPi.ADC()
    adc.set_adc_refvoltage(4.096)

    while True:
        file = open('adclog.txt', 'a')
        for x in range(1,8):
            file.write(str(datetime.datetime.now()) + " Pin: " + str(x) + " " + adc.read_adc_voltage(x, 0))
        file.close()
        time.sleep(0.1)
       

if __name__ == "__main__":
    main()

//edit, poprawiłem babole
« Ostatnia zmiana: 2021-09-03 | 13:59:51 wysłana przez r2d2 »

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #8 dnia: 2021-09-03 | 14:44:06 »
Wywala mi błąd:
IndentationError: unindent does not match any outer indentation level

dla lini "except ImportError:"

Offline joannes

  • Zaawansowany użyszkodnik
  • ****
  • Wiadomości: 453
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #9 dnia: 2021-09-03 | 15:06:56 »
@seler, jeśli dobrze zrozumiałem, to przeskakuj pomiar w skrypcie i niech wyświetla Ci real na wyświetlaczu. Chyba że chcesz dane pomiarowe wystawić do SCADA, to podzedl bym w Modbusa, jest dostępna biblioteka na raspi. Nie znam się na programowaniu, przypuszczam że korniki podsunąć rozwiązanie, jak zrobić akwizycje z I/O, mogę wspomóc w odczycie z modbusa do SCADA.

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #10 dnia: 2021-09-03 | 15:15:31 »
Potrzebuję log do wykresu. A są jakieś urządzenia pomiarowe do termopar na modbus?

Offline r2d2

  • Kornik - Ekspert
  • *****
  • Wiadomości: 627
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #11 dnia: 2021-09-03 | 15:17:50 »
Sprawdź czy nie pomieszałeś czegoś z wcięciami (tabulatory / specje etc). Malinę też możesz podpiąć pod modbus.

Offline joannes

  • Zaawansowany użyszkodnik
  • ****
  • Wiadomości: 453
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #12 dnia: 2021-09-03 | 15:30:10 »
Jeśli interesuje Cię to, to mogę wieczorem poszukac coś dla domu

Tak można, dlatego pytałem co dalej chce robic
« Ostatnia zmiana: 2021-09-03 | 15:32:31 wysłana przez joannes »

Offline seler

  • Kornik - Ekspert
  • *****
  • Wiadomości: 1929
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #13 dnia: 2021-09-03 | 15:41:06 »
Opcjonalnie mam rozwiązanie - interfejs termopary na 1-wire a mam już działający adapter 1-wire na modbus i możnaby spiąć tyle że trzy takie moduły to dwie stówy a mam już funkcjonujący Expander więc lepiej to wykorzystać. Zwłaszcza że działa, kwestia tylko zapisu odczytu do pliku.

Offline r2d2

  • Kornik - Ekspert
  • *****
  • Wiadomości: 627
Odp: Czy jest na sali pytoniarz?
« Odpowiedź #14 dnia: 2021-09-03 | 21:58:26 »
skoro demo działało to wyżej to z libem jest ok