Ciao Ther
> Hai provato a scriverlo e vedere cosa fa?
Tradotto l’ho anche tradotto. Ho migliorato anche il caso che si blocca ad aspettare che il DOUT (dato pronto) non cambia. Ho messo il timeout almeno se ci sono errori sconosciuti ci si riesce a venirne via.
Sub readHX711
Clear timed_out ' reset the flag
Clear avrg ' average variable counter
Clear cnti ' reset value
Clear ADSK ' lowering the clock pin
' next instruction gives a little delay before reading the input
Clear cntn ' reset value
Repeat ' loop over the wanted samples
While ADDO = 1 ' probing the data pin to wait the start
If cnti < 250 Then ' counting a time-out in case the cell fails
DelayUS 50 ' for one round
Else ' if exceeds
Set timed_out ' flag a no ready signal
Return ' leave the subroutine
End If
Inc cnti ' keep counting track
Wend ' end of wait ADD0
Clear coun ' resetting the variable for the result
Clear cnti ' reset the counter
Repeat ' counting for 24 bits
Set ADSK ' ticking the serial clock
coun = coun << 1 ' shift left the variable
Clear ADSK ' reset the clock
coun.0 = ADDO
Inc cnti ' keep counting track
Until cnti > 23 ' loop for the next bit
Clear ADSK ' reset the clock (ending communication)
@Nop ' a small delay
Set ADSK ' reset the clock high
avrg = avrg + coun - offset ' sum the sample to the average value
Inc cntn
Until cntn >= MAXSAMPLES
coun = avrg / MAXSAMPLES ' calculate the average
EndSub
Per la cronaca eccola qui. Ho aggiunto anche una media che si definisce nella testata del programma quanti cicli fare (al momento ne ho dati 40, ma abbiamo la possibilità di andare fino a 255).
Tenuto conto che l’ offset è da calcolare il punto di zero che include il valore di tara. In maniera teorica lo zero è a VCC/2 e sarebbe 2^23. Per quello meno di quello sarà negativo.
Ancora non ho fatto le prove fisiche, solo una simulazione e non ho idea esattamente se sono valori razionali. Sarei curioso di capire cosa si può fare con il GAIN che poi non è letto durante i 25 bit, credo. Piuttosto dovrebbe dare l’informazione per il ciclo successivo.
Ad ogni modo ho il PIC e arduino per fare delle prove, manca solo la voglia di mettere insieme un prototipo. Andrò un po per le lunghe.
Ho visto qualcosa del sorgente e si vede l’uso dell’SPI per la comunicazione. Per quello che sto facendo si usa solo un bit banging (come in arduino del resto) e si sta bene con una frequenza se tenuto il clock nei limiti descritti dal foglio dati. Poi il resto dei componenti e come l’esempio dei fogli dati e ho preso il modulino.
Grazie delle informazioni…
Devo solo mettermi alla prova
-
Questa risposta è stata modificata 3 anni, 5 mesi fa da
Picmicro675.
-
Questa risposta è stata modificata 3 anni, 5 mesi fa da
Picmicro675.