Appunti sugli Amplificatori operazionali

L’amplificatore operazionale è un amplificatore in continua: ciò significa che esiste una continuità elettrica fra ingresso e uscita

l’almplificatore operazionale è prima di tutto un amplificatore “differenziale”; ciò vuol dire che il segnale presente in uscita non dipende solo da uno o dall’altro degli ingressi, ma da tutti e due, ed esattamente dalla differenza che esiste fra il segnale applicato su un ingresso ed il segnale applicato sull’altro

Usato come amplificatore, l’operazionale presenta la caratteristica di amplificare qualsiasi segnale applicato in ingresso: sia un normale segnale variabile, caratterizzato da determinate frequenze, sia una tensione con fluttuazioni lentissime o, addirittura, di valore costante. Parlando in termini di frequenza, si dice quindi che l’amplificatore operazionale lavora con frequenze da zero (corrente continua) fino ad un valore massimo, determinato dalle caratteristiche specifiche dell’amplificatore stesso.

Comparatore
Il comparatore è un circuito che confronta due segnali applicati ai due ingressi, di cui uno viene preso come tensione di riferimento, cioè di confronto. L’uscita fornisce un valore alto o un valore basso, secondo il risultato del confronto.

comparatore

V1>V2 => Vu = +Vcc

V2>V1 => Vu = -Vcc

Amplificatore invertente


La resistenza R2 riporta all’entrata parte del segnale in uscita, realizzando in tal modo quella che viene detta “controreazione”; senza R2, l’operazionale non potrebbe funzionare come amplificatore lineare, poichè la sua uscita commuterebbe con estrema rapidità fra un valore minimo (prossimo a zero) ed un valore massimo (prossimo alla tensione di alimentazione)
L’amplificazione del circuito di figura 6 dipende dalle due resistenze R1 ed R2, secondo la formula
Av = R2 / R1
Osserviamo che il segnale in uscita è invertito, ovvero è di segno opposto a quello in entrata; se Vi aumenta, Vu diminuisce, e viceversa.

Amplificatore non invertente
opam_noninvertente
il segnale d’ingresso viene applicato all’ingresso contrassegnato col “+”, ovvero a quello non invertente. In questo caso, infatti, il segnale in uscita ha lo stesso segno di quello in entrata.
In questo caso, l’amplificazione è data dalla formula:
Av = (R1 + R2) / R1

Buffer a guadagno unitario o Inseguitore di tensione

opam_buffer
Col termine “buffer” si intende un circuito che svolge una funzione di separazione o di adattamento.
il guadagno di questo circuito è uguale a 1, non si ottiene un guadagno di tensione, ma un guadagno di impedenza.
Utilizzabile ad esempio per pilotare carichi che assorbano più dei 40mA che arduino è in grado di fornire.

 

Sommatore invertente

opampsumming

Il sommatore invertente effettua l’operazione di somma delle tensioni di ingresso.
Se le resistenze sono tutte uguali si può assumere:
7ebe32409ffdfa5bc8b2a46dc839a360
Sommatore non invertente
imga
Se si sceglie R1 = R2
si ha:
img1a

Fonti:
GLI AMPLIFICATORI OPERAZIONALI – Raffaele Ilardo
Operazionale – Sommatore – Elemania

Send data from raspberry pi / banana pi to arduino

for Raspberry pi
git clone git://git.drogon.net/wiringPi
cd wiringPi
chmod +x build
./build

for banana pi
git clone https://github.com/LeMaker/WiringBPi.git
cd WiringBPi
chmod +x build
./build

Edit source before build for change pin

both pi
git clone --recursive git://github.com/ninjablocks/433Utils.git
make codesend

Arduino
Download and install library rc-switch from
https://github.com/sui77/rc-switch

usage from shell
./codesend 12345

arduino wrote in serial monitor (sketch ReceiveDemo_Simple from rc-switch example)
Received 12345 / 24bit Protocol: 1

for antenna look this

execute code for a specified time in Arduino

const int ledPin =  13; // the number of the LED pin
int ledState = 0; // ledState used to set the LED
unsigned long previousMillis = 0; //will store last time LED was updated
unsigned long interval = 1000; //interval at which to blink (milliseconds)
void setup() {
  pinMode(ledPin, OUTPUT); //set the digital pin as output:
}

void loop() {
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis; //save the last time you blinked the LED
    //if the LED is off turn it on and vice-versa:
    ledState ^= 1;
    digitalWrite(ledPin, ledState);
  }
}

source