Utilisation du CAN mcp3202
Bonjour a tous
je profite de mon temps libre , maintenant a la retraite pour m’initier a python et Raspberry.
Je suis aujourd'hui devant un problème :
je me sers de l'excellent document de https://deusyss.developpez.com/tutor...Gpio/#LIII-C-5
pour essayer de mettre en œuvre un CAN mcp3202, pour cela je m'inspire très fortement du listing d'Alexandre Galode, Mais je ne parviens a lire que sur ch0 , quand j'envoie ma tension a lire en ch1 , j'ai toujours 0 V . pour le cablage j'utilise cette carte http://https://www.amazon.fr/gp/prod...?ie=UTF8&psc=1
Pouvez vous me dire ou je déconne :oops:. Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# test_CAN_2.py
#
# Copyright 2020 <pi@raspberrypi>
#
# source devellopez.com Raspberry et le port GPIO par Alexandre Galode
# et https://scruss.com/blog/2013/02/02/simple-adc-with-the-raspberry-pi/
import spidev
import time
def lire_analog(puce_spi , entree_analog ):#entrée_analog = cho :0 ou ch1 :1
liaison = spidev.SpiDev(puce_spi ,entree_analog)
liaison.max_speed_hz = 300000 # en Hertz
# Initialisation des parametres de lecture
# (cf datasheet pour les curieux) mcp3202mcp3202
if entree_analog == 0:
value = 128
else:
value = 160
to_send = [value, 0]
print (value)
# Lecture
rd_octets = liaison.xfer2(to_send)
# La reponse arrive sur deux octets
msb = rd_octets[0]
lsb = rd_octets[1]
value = (msb << 8) + lsb
calcul = 2 * (value * 3.3) / 4096.0
return calcul
while True:
entree_analog = 1 # 0 pour lire en ch0 pour lire en ch1
puce_spi = 0
calcul = lire_analog(puce_spi , entree_analog )
print ("{:2.3f}". format(calcul))
time.sleep(2) |