Showing posts with label Ứng dụng Arduino. Show all posts
Showing posts with label Ứng dụng Arduino. Show all posts

Wednesday, February 11, 2015

Thiết kế đèn ngủ tự động tắt mở với cảm biến ánh sang- quang trở (Photoresistor)

Hôm nay tôi sẽ hướng dẫn các bạn điều khiển đèn ngủ với cảm biến ánh sáng sử dụng Arduino!

Chắc hẳn nhà các bạn đều sử dụng cái đèn ngủ tự động bật - tắt, buổi tối thì tự động sáng lên và buổi sáng thì tự động tắt đi.

Có nhiều cách để làm các mạch điều khiển bóng đèn tự động tắt mở như này, trong chuyên mục Cùng chơi-Sáng tạo cùng Arduino, Tôi xin giới thiệu đến các bạn cách sử dụng Cảm biến ánh sang để thiết kể đèn tự động tắt mở.

Trước khi đi vào bài học chúng ta hãy tìm hiểu sơ lược về cảm biến ánh sáng hay quang trở (các bạn có thể theo link sau để lấy tài liệu về quang trở (:

Quang trở (Light Dependent Resistors) Điện trở phụ thuộc vào ánh sáng: là một loại cảm biến ánh sáng đơn giản, nguyên tắc hoạt động dựa vào hiện tượng quang điện trong.
Nguyên lý làm việc của quang điện trở là khi ánh sáng chiếu vào chất bán dẫn (có thể là Cadmium sulfide – CdS, Cadmium selenide – CdSe) làm phát sinh các điện tử tự do, tức sự dẫn điện tăng lên và làm giảm điện trở của chất bán dẫn. Các đặc tính điện và độ nhạy của quang điện trở tùy thuộc vào vật liệu chế tạo.
Khi ánh sáng kích thích chiếu vào LDR thì nội trở của LDR sẽ giảm xuống , tiến về 0 ôm( mạch kín).
Nhưng khi ánh sáng kích thích ngừng thì nội trở tăng đến vô cùng(hở mạch).
Ứng dụng trong mạch điện : Chuyển mạch (switch sytems).
Trên đây là hình ảnh mô phỏng hoạt động của LDR khi chiếu ánh sáng vào quang trở.

Bây giờ các bạn đã hiểu cơ bản về cảm biến ánh sáng (quang trở)
Chúng ta hãy cùng đi vào lập trình Arduino với cảm biến ánh sáng để điều khiển tắt mở đèn, sau này khi hiểu về cảm biến ánh sáng các bạn ứng dụng để làm đèn ngủ tự động tắt mở với một bộ điều khiển đơn giản như: sử đụng transistor, hay ic để điều khiển.

Để thực hiện bài học này chúng ta cần:
1. Arduino board
2. Quang trở
3. Bảng cắm
4. Dây cắm
5. Điện trở

Sơ đồ ráp mạch

Code
int potpin=0; //Định nghĩa chân quang trở chân 0
int ledpin=11;//Chân Led chân 11
int val=0;// giá trị ban đầu
void setup()
{
pinMode(ledpin,OUTPUT);//Định nghĩa chân xuất tín hiệu
Serial.begin(9600);
}
void loop()
{
val=analogRead(potpin);
Serial.println(val);
analogWrite(ledpin,val);
delay(10); 
}

Chúc các bạn thành công

Thursday, January 22, 2015

MÔ HÌNH CÁNH TAY ROBOT

Chào các bạn! Rất vui khi được gặp lại các bạn.


Đã lâu lắm rồi không viết blog, do công việc của mình thời gian vừa rồi khá bận rộn. Giờ cũng đã rảnh hơn lại tiếp tục cùng các bạn chinh phục Arduino.
Hôm nay trở lại blog mình sẽ gửi tới các bạn một đề tài mới cùng Arduino là làm cánh tay robot.

Trong bài viết này và các bài viết tới đây, mình sẽ hướng dẫn các bạn thiết kế và điều khiển robot một cách tỉ mỉ từ bản vẽ thiết kế đến việc gia công từng chi tiết trên CNC.

Trình tự gia công như thế nào, viết code ra sao mình sẽ hướng dẫn các bạn kỹ lưỡng bên mục CNC.

Wednesday, October 8, 2014

Đèn giao thông - Traffic light

Chào các bạn
Hôm nay chúng ta cùng trở lại với Sáng tạo cùng arduino, bài học ngày hôm nay rất thú vị đó là: lập trình đèn tín hiệu giao thông với đèn 3 led, xanh đỏ và vàng.

Yêu cầu phần cứng
-      Mạch arduino uno
-      Led xanh, đỏ và vàng
-      Điện trở 220Ohm
-      Dây cắm
-      Bảng cắm breadboard

Sơ đồ nối mạch




















Code
int redled =10; // định nghĩa chân Led đỏ là chân 10
int yellowled =7; // định nghĩa chân Led vàng chân 7
int greenled =4; // định nghĩa chân Led xanh chân 4
void setup()
{
pinMode(redled, OUTPUT);// đọc tín hiệu Led đỏ
pinMode(yellowled, OUTPUT); //đọc tín hiệu Led vàng
pinMode(greenled, OUTPUT); //đọc tín hiệu Led xanh
}
void loop()
{
digitalWrite(redled, HIGH);// bật led đỏ
delay(1000);// chờ 1 giây
digitalWrite(redled, LOW); // tắt led đỏ
digitalWrite(yellowled, HIGH);//bật led vàng
delay(200);//chờ 0.2 giây
digitalWrite(yellowled, LOW);//tắt led vàng
digitalWrite(greenled, HIGH);//bật led xanh
delay(1000);//chờ 1 giây
digitalWrite(greenled, LOW);//tắt led xanh

}

Friday, September 26, 2014

Làm việc với rơ le ( relay)

Chào các bạn hôm nay chúng ta cùng trở lại với loạt bài Arduino cơ bản nhé!

Bài học ngày hôm nay làm việc với rơ le (relay)
Sau khi học xong bài học hôm nay chúng ta sẽ biết được
Thế nào là một relay?
Cách điều khiển nó bằng Arduino
Sau này khi chúng ta ứng dụng với Arduino nâng cao sẽ điều khiển các thiết bị thông qua rơ le

Yêu cầu phần cứng
- Mạch Arduino
- Rơ le
- Bảng cắm Breadboard
- Dây cắm
- Transistor

Như vậy câu hỏi đầu tiên đặt ra đó là: Thế nào là rờ le (relay)???
Rờ le là một thiết bị đóng ngắt
Cấu tạo cơ bản của rờ le như sau: Một công tắc bật tắt, một cuộn cảm(cuộn dây), có nhiều loại rờ le, Chia theo chân: có các loại 3 chân, 4 chân, 5 chân ...
Chia theo điện áp có rờ le 5v, 12v, 24v ...

Sơ đồ mạch của rơ le

Nguyên lý hoạt động của rờ le
Khi nguồn điện đi qua cuộn cảm sẽ tạo ra một từ trường hút hoặc đẩy để đóng ngắt công tắc của rờ le để điều khiển thiết bị.
Để cho rờ le hoạt động ta chỉ cần
- Nối nguồn vào chân của công tắc rơ le và nguồn đi vào cuộn cảm thông qua một bộ điều khiển ( ví dụ công tắc, nút nhấn ...)
- Chân còn lại của cuộn cảm đi ra mát và chân dương chờ của công tắc đi đến thiết bị cần điều khiển
Làm thế nào chúng ta sử dụng Arduino để điều khiển rơ le?
Để điều khiển rơ le trong ví dụ ngày ta sử dụng một transistor, (trong bài học này tôi sử dụng transistor C1815). 


Sơ đồ chân C1815

Sơ đồ kết nối với Arduino
Chân 2 của Arduino nối với chân B của transistor C1815
Chân Gnd của Arduino nối với chân E của C1815 và nối mass
Chân C của transistor nối với chân cuộn cảm của Rơ le

Code

void setup()
{
  pinMode (2, OUTPUT); // set pin 2 as an output pin
}

void loop()
{
      digitalWrite (2, HIGH);
    // Bật chân 2 một giây sau đó tắt đi
    delay (1000);
    digitalWrite (2, LOW);
    delay (1000);
 }

Tuesday, September 23, 2014

Arduino với cảm biến nhiệt độ TMP36

Ứng dụng Arduino với cảm biến nhiệt độ- tiếp theo

Chào các bạn, hôm nay chúng ta lại cùng nhau tìm hiểu về loại cảm biến nhiệt độ TMP36, và cách sử dụng Arduino để thu thập tín hiệu từ cảm biến này.

Yêu cầu về phần cứng
Mạch Arduino,
Cảm biến nhiệt độ TMP36
Breadboard
Dây cắm

Sơ lược về cảm biến nhiệt độ TMP36
datasheet TMP36
Đối với những linh kiện điện tử để biết được chính xác về thông số kỹ thuật hay chế độ làm việc cũng như ứng dụng của nó, các bạn nên tìm datasheet của nó.
Sau đây chúng ta cùng làm quen với cảm biến tương tự TMP36.
Cảm biến này nhìn qua thì chúng ta thấy giống như một transistor vậy, TMP36 sử dụng rất đơn giản, nếu nhìn thẳng vào mặt phẳng thì chân số 1 là chân cấp nguồn 5V (chân này bạn có thể cắm vào nguồn 5V của Arduino khi sử dụng nó với Arduino), chân thứ 2 là chân xuất tín hiệu tương tự (tín hiệu dạng xung), chân thứ 3 là chân nối mát hay chân GND(khi sử dụng với Arduino các bạn có thể lấy từ chân Gnd từ Arduino.
Cảm biến TMP 36 này xuất tín hiệu là tín hiệu điện áp, tín hiệu này tỷ lệ thuận với nhiệt độ. Cứ 10mV tương đương với 1 độ C, nó có thể đo được nhiệt độ từ -40 -->125 độ C.
Bởi vì nó là một tín hiệu tương tự nên khi làm việc với Arduino chúng ta sử dụng hàm AnalogRead()
Khi Arduino làm việc nó sẽ trả tín hiệu tương tự này về giá trị từ 0-1023 tùy thuộc vào điện áp từ 0-5V(5000mV). 
Điện áp thực tế sẽ là điện áp mà Arduino đọc được sau đó nhân với (5000/1024).
Sau đó chúng ta phải trừ đi điện áp bù 400 và chia cho 10 sẽ ra kết quả là độ C
Bây giờ chúng ta cùng ráp vào mạch nhé!

Sơ đồ lắp mạch
 

Sơ đồ mạch
Nhìn từ mặt phẳng của cảm biến
Chân 1 nối với nguồn 5V từ Arduino
Chân 2 nối với chân A0
Chân 3 nối với mát Gnd của Arduino

Hình ảnh sử dụng Fritzing.

Code
void setup()
{
Serial.begin(9600);   // Kết nối với màn hình hiển thị
}
float voltage = 0; // Thiết lập một số giá trị ban đầu
float sensor = 0;
float celsius = 0;
float fahrenheit = 0;
void loop()
{              // Bắt đầu đo
sensor = analogRead(0);
voltage = (sensor*5000)/1024; // Chuyển đổi tín hiệu cảm biến sang mili Volt
voltage = voltage-400;        // Trừ đi điện áp bù
celsius = voltage/10;         // Chuyển đổi mV sang độ C
fahrenheit = ((celsius * 1.8)+32); // Đổi độ C sang độ F
Serial.print("Temperature: ");
Serial.print(celsius,2);
Serial.println(" degrees C");
Serial.print("Temperature: ");
Serial.print(fahrenheit,2);
Serial.println(" degrees F");
Serial.println("_ _ _ _ _ _ _ _ _ _ _ _ _ _  ");
delay (1000); // delay 1000 ms vì trong màn hình hiển thị nhiệt độ ở môi trường Arduino dữ liệu thay đổi rất nhanh nên chúng ta cần phải trì hoãn lại.
}

Chúc các bạn thành công!