Pages: 1 ... 3 4 [5] 6   Go Down
Author Topic: analogComp, una libreria per gestire il comparatore analogico  (Read 8941 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non specificato di default viene passato CHANGE
Che vergogna, non ricordarsi neanche cosa fanno le proprie librerie  smiley-sweat smiley-sweat
E' vero, di default prende CHANGE  smiley-wink

Il problema nella libreria è l'ISR che è chiamata sui Tiny e su altri micro ANA_COMP_vect mentre nell'ATmega328P ed in altri è chiamata ANALOG_COMP_vect
Grazie della segnalazione. Ho corretto il codice, adesso seleziona il vettore in base al micro.
Il file cpp corretto te lo allego qui sotto. Poi metterò tutto online sul mio sito (ho l'host in manutenzione).

* analogComp.cpp (4.75 KB - downloaded 44 times.)
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Attualmente la libreria lavora con una buona quantità di microcontrollori Atmel e schede Arduino:
  • Attiny2313/4313
  • Attiny24/44/84
  • Attiny25/45/85
  • Atmega344/644/1284
  • Atmega8
  • Atmega48/88/168/328 (Arduino UNO)
  • Atmega640/1280/1281/2560/2561 (Arduino MEGA)
  • Atmega32U4* (Arduino Leonardo)
*il supporto di alcuni di essi è solo "su carta", vanno materialmente provati

Limitazioni specifiche

  • Attiny2313/4313: a causa del fatto che queste MCU non hanno un ADC integrato, per AIN- è possibile selezionare solo AIN1
  • Atmega32U4: l’AIN- dell’Atmega32U4 può essere connesso solo ad un ingresso analogico a causa del fatto che esso non ha un pin AIN1.



Scusa, che tu sappia, questa libreria è supportata anche dal Atmel SAM3X8E ARM Cortex-M3 di Arduino Due? Grazie.
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10436
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

assolutamente no, il chip è troppo differente, a meno che leo non si sia preso una due la vedo dura
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La Due ce l'ho ma non ho portato la lib per il Sam3x per il semplice fatto che questo chip non ha un comparatore analogico integrato.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La Due ce l'ho ma non ho portato la lib per il Sam3x per il semplice fatto che questo chip non ha un comparatore analogico integrato.
Ah ok grazie ... Premetto che sono alle prime armi ... ma per la mia tesi avrei bisogno di sapere se per realizzare il comparatore analogico mi basta introdurre qualche 'if' nello sketch, oppure se c'è un modo più efficiente ... Grazie ancora.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il comparatore è un vero e proprio amplificatore operazionale integrato in alcuni chip. Quasi tutti gli AVR8 ce l'hanno.
In pratica è l'op-amp stesso che fa il lavoro, tu a livello di codice non devi far altro che gestire l'interrupt che genera l'op-amp quando si verifica la condizione impostata.

Puoi anche realizzarlo a livello software, usando un ingresso analogico ed una routine che controlla periodicamente se il valore dell'ingresso è superiore o inferiore ad una predeterminata soglia ma non avrai mai la precisione di un op-amp né la stessa velocità (una lettura analogica è lenta). Potresti replicare la funzione usando un op-amp esterno con uscita collegata ad un pin interrupt del chip, in modo che se l'op-amp "scatta" ti attiva l'interrupt, che intercetti da codice.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa una cosa però ... Dato che quello che mi serve è l'integrazione stessa di un multivibratore astabile, se devo utilizzare dei comparatori esterni è inutile comprare Arduino Due ... o sbaglio?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quello che stai facendo lo sai tu, mica posso leggerti nel pensiero  smiley-wink
Perciò non so se la Due ti serve per un qualche motivo oppure no.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-lol Certo  smiley-grin ... Difatti la mia era una sorta di richiesta di conferma sull'utilizzo di Arduino Due per l'integrazione di un multivibratojavascript:void(0);re astabile  smiley
Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la questione non e' "la uno, la due o la tre", la questione e' se un implementazione sw, con tutte le lentezze che ne derivano, basta per la tua applicazione
e questo lo puoi sapere solo tu  smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 75
Posts: 4603
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il comparatore è un vero e proprio amplificatore operazionale integrato in alcuni chip. Quasi tutti gli AVR8 ce l'hanno.
In pratica è l'op-amp stesso che fa il lavoro, tu a livello di codice non devi far altro che gestire l'interrupt che genera l'op-amp quando si verifica la condizione impostata.
Puoi anche realizzarlo a livello software, usando un ingresso analogico ed una routine che controlla periodicamente se il valore dell'ingresso è superiore o inferiore ad una predeterminata soglia ma non avrai mai la precisione di un op-amp né la stessa velocità (una lettura analogica è lenta). Potresti replicare la funzione usando un op-amp esterno con uscita collegata ad un pin interrupt del chip, in modo che se l'op-amp "scatta" ti attiva l'interrupt, che intercetti da codice.

Forse non ho letto bene qui nel thread e sul manuale Atmel 328.
Mi pare di aver letto che se per AIN-  si utilizza un pin analogico, allora l'ADC non può essere utilizzato, viene disabilitato. Dico una bestialità ?
Logged

my name is IGOR, not AIGOR

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, è giusto.
Se attivi uno degli ingressi dell'ADC come pin AIN-, l'ADC viene disattivato.
Ma non è obbligatorio usare un pin analogico come ingresso invertente, il 328 ha uno specifico pin denominato AIN1, che è il piedino PD7, basta attaccare la tensione lì e l'ADC non viene toccato.
Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 75
Posts: 4603
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, è giusto.
Se attivi uno degli ingressi dell'ADC come pin AIN-, l'ADC viene disattivato.
Ma non è obbligatorio usare un pin analogico come ingresso invertente, il 328 ha uno specifico pin denominato AIN1, che è il piedino PD7, basta attaccare la tensione lì e l'ADC non viene toccato.

Grazie per la risposta.
In un altro topic ti ho posto una domanda, posso riproporla qui?
Scusa l'ignoranza, ho letto anche il datasheet del 328 ma c'e' solo una paginetta.
Non mi è chiaro. In quel caso proponi ad un utente di usare il comparatore per verificare se una pila da 1,5V scende sotto i 1,3V (almeno questo vuole fare l'utente).
Perciò in AIN1 (AIN-) colleghi il positivo della pila e in AIN+ a cosa lo colleghi per avere un riferimento?  Se AIN+ è analog_reference okay ma è solo a 1,1V giusto?
Logged

my name is IGOR, not AIGOR

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma la pila e' un elemento da controllare esterno o e' l'alimentazione stessa ?
se e' un componente esterno, cioe' ad esempio se il tizzio vuole fare un tester di batterie, su un capo del comparatore metti la batteria da misurare e sull'altro un partitore che a partire dalla tensione di alimentazione ti crea il riferimento di 1,3V
Vedilo come un normale OAmp
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Pages: 1 ... 3 4 [5] 6   Go Up
Jump to: