Arduino layihələriKoteqoriyasız

Arduino ilə analoq gərginliyin (girişin) oxunulması

Bu nümunə, analoq pin 0-da (A0) bir analoq girişin necə oxunulması, analoqRead () -dən oxunan dəyərlərin gərginliyə necə çevirilməsi və Arduino Software (IDE) serial monitoruna necə yazılması ( çıxarılacağı) haqqındadır.

Tələb olunan avadanlıq

  • Arduino və ya Genuino lövhəsi (board)
  • 10k Om potensiometr

Dövrə

Görüntü Fritzing istifadə edərək hazırlanmışdır. Daha çox dövrə nümunələri üçün Fritzing layihə səhifəsinə ( Fritzing project page) baxın


Potensiometrin hər üç çıxışını Arduino lövhənizə qoşun. Birincisi, potansiyometrin kənar pinlərindən biri yerə (GND-a) gedir. İkincisi, potansiyometrin digər kənar pinindən 5 volta gedir. Üçüncüsü, potensiometrin orta pinindən analoq giriş 0-ə gedir.

Potensiometrin dəstəyini döndərərək, potensiometrin mərkəzi pininə bağlanan hərəkətli hissənin hər iki tərəfindəki müqavimət miqdarını dəyişdirirsiniz. Bu, mərkəzi pindəki gərginliyi dəyişdirir. Mərkəz və 5 volta qoşulmuş tərəf arasındakı müqavimət sıfıra yaxın olduqda (və digər tərəfdəki müqavimət 10 kilommə yaxındır), mərkəz pinindəki gərginlik 5 volta yaxınlaşır. Potensiometrin dəstəyi tərs çevrildikdə , mərkəzi pindəki gərginlik 0 volt və ya yerə (GND-a) yaxınlaşır. Bu gərginlik, giriş olaraq oxuduğunuz analoq gərginliyidir.

Lövhənin mikrokontrollerinin içində, bu dəyişən gərginliyi oxuyan və 0 ilə 1023 arasında bir rəqəmə çevirən bir analoq-rəqəm çeviricisi və ya ADC adlanan bir dövrə var. Şaft (potensiometrin dəstəyi) bir istiqamətə fırladıldıqda, A0 pininə gedən gərginlik “0” olacaqdır, giriş dəyəri isə 0 olacaqdır. Şaft əks istiqamətə fırladıldıqda pinə 5 volt gedir və giriş dəyəri 1023-olur. analogRead () 0 ilə 1023 arasında bir dəyər verir və bu pinə tətbiq olunan gərginlik miqdarı ilə mütənasibdir.

Prinsipial sxem

Kod

Aşağıdakı proqramda, quraşdırma (setup) mərhələsində edəcəyiniz ilk şey lövhə ilə kompüteriniz arasında olan xətti saniyədə 9600 bit məlumat ötürmə sürəti ilə ardıcıl rabitəyə (serial communications) başlatmaqdır:

Serial.begin (9600);

Daha sonra, kodunuzun əsas döngüsündə (main loop), potensiometrinizdən gələn müqavimət dəyərini (0 ilə 1023 arasında olacaq, int məlumat növü üçün mükəmməl olacaq(perfect for an int datatype)) saxlamaq (variable to store) üçün dəyişən qurmalısınız.

int sensorValue = analogRead (A0);

Dəyərləri 0-1023 arasındakı pinin oxuduğu gərginliyə uyğun bir aralığa dəyişmək üçün başqa bir dəyişən, bir float yaratmalı və bir az riyazi əməl etməlisiniz. 0.0 ilə 5.0 arasındakı rəqəmləri ölçmək üçün 5.0-i, 1023.0-ə bölün və bu hissəni sensorValue ilə vurun:

float voltage= sensorValue * (5.0 / 1023.0);

Nəhayət, bu məlumatı seriyalı monitorda çap etməlisiniz. Bunu kodun son sətrindəki Serial.println () əmri ilə edə bilərsiniz:

Serial.println(voltage)

İndi Arduino IDE-də Serial Monitorunuzu açdığınızda (üst yaşıl çubuğun sağ tərəfindəki nişanı tıklayaraq və ya Ctrl + Shift + M düymələrini basaraq) 0.0 – 5.0 aralığında sabit bir axın görməlisiniz. Dəstəyi döndərdiyiniz zaman A0 pininə daxil olan gərginliyə uyğun olaraq dəyərlər dəyişəcəkdir.

/*
  ReadAnalogVoltage

  Reads an analog input on pin 0, converts it to voltage, and prints the result to the Serial Monitor.
  Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  // print out the value you read:
  Serial.println(voltage);
}

Əlaqəli Məqalələr

0 0 səslər
Article Rating
Abunə ol
Xəbər ver
guest

0 Comments
Sətir içi geri bildirimlər
Bütün şərhlərə baxın
Back to top button
0
Fikirlərinizi bilmək istərdik,lütfən şərh yazın.x