Mục lục:
- Bước 1:
- Bước 2: Đăng ký cấu hình
- Bước 3: Đăng ký dữ liệu
- Bước 4: Chế độ ADC một đầu
- Bước 5:
- Bước 6: Chế độ ADC vi sai
Video: Arduino và TI ADS1110 ADC 16-bit: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong hướng dẫn này, chúng tôi kiểm tra việc sử dụng Arduino để làm việc với Texas Instruments ADS1110 - một IC chuyển đổi tín hiệu tương tự sang số 16-bit cực kỳ nhỏ nhưng hữu ích.
Nó có thể hoạt động trong khoảng từ 2,7 đến 5,5 V vì vậy nó cũng tốt cho Arduino Due và các bảng phát triển điện áp thấp hơn khác. Trước khi tiếp tục, vui lòng tải xuống bảng dữ liệu (pdf) vì nó sẽ hữu ích và được tham khảo trong hướng dẫn này. ADS1110 cung cấp cho bạn tùy chọn ADC chính xác hơn so với ADC 10 bit của Arduino cung cấp - và nó tương đối dễ sử dụng. Tuy nhiên, nó chỉ có sẵn dưới dạng một phần trống trong SOT23-6.
Bước 1:
Tin vui là bạn có thể đặt mua ADS1110 gắn trên bảng đột phá rất tiện lợi. ADS1110 sử dụng bus I2C để giao tiếp. Và vì chỉ có sáu chân nên bạn không thể đặt địa chỉ xe buýt - thay vào đó, bạn có thể chọn từ sáu biến thể của ADS1110 - mỗi biến thể có địa chỉ riêng (xem trang hai của bảng dữ liệu).
Như bạn có thể thấy trong ảnh ở trên, của chúng tôi được đánh dấu “EDO” phù hợp với địa chỉ xe buýt 1001000 hoặc 0x48h. Và với các mạch ví dụ, chúng tôi đã sử dụng điện trở kéo lên 10kΩ trên bus I2C.
Bạn có thể sử dụng ADS1110 làm ADC một đầu hoặc phân biệt - Nhưng trước tiên chúng ta cần kiểm tra thanh ghi cấu hình được sử dụng để điều khiển các thuộc tính khác nhau và thanh ghi dữ liệu.
Bước 2: Đăng ký cấu hình
Lật trang 11 của bảng dữ liệu. Thanh ghi cấu hình có kích thước một byte và khi ADS1110 đặt lại theo chu kỳ nguồn - bạn cần đặt lại thanh ghi nếu nhu cầu của bạn khác với giá trị mặc định. Bảng dữ liệu giải thích nó khá gọn gàng… bit 0 và 1 xác định cài đặt độ lợi cho PGA (bộ khuếch đại độ lợi có thể lập trình).
Nếu bạn chỉ đang đo điện áp hoặc thử nghiệm, hãy để chúng bằng 0 để đạt được mức tăng 1V / V. Tiếp theo, tốc độ dữ liệu cho ADS1110 được kiểm soát với bit 2 và 3. Nếu bạn đã bật lấy mẫu liên tục, điều này sẽ xác định số lượng mẫu mỗi giây được ADC lấy.
Sau một số thử nghiệm với Arduino Uno, chúng tôi nhận thấy các giá trị trả về từ ADC hơi sai khi sử dụng tốc độ nhanh nhất, vì vậy hãy để nó là 15 SPS trừ khi có yêu cầu khác. Bit 4 đặt lấy mẫu liên tục (0) hoặc lấy mẫu một lần (1). Bỏ qua bit 5 và 6, tuy nhiên, chúng luôn được đặt là 0.
Cuối cùng là bit 7 - nếu bạn đang ở chế độ lấy mẫu một lần, hãy đặt nó thành 1 yêu cầu lấy mẫu - và việc đọc nó sẽ cho bạn biết dữ liệu trả về là mới (0) hay cũ (1). Bạn có thể kiểm tra xem giá trị được đo có phải là giá trị mới hay không - nếu bit đầu tiên của byte cấu hình đứng sau dữ liệu là 0, thì đó là giá trị mới. Nếu nó trả về 1 thì chuyển đổi ADC vẫn chưa kết thúc.
Bước 3: Đăng ký dữ liệu
Vì ADS1110 là ADC 16-bit, nó trả về dữ liệu trên hai byte - và sau đó là giá trị của thanh ghi cấu hình. Vì vậy, nếu bạn yêu cầu ba byte, toàn bộ lô sẽ quay trở lại. Dữ liệu ở dạng "hai phần bù", là một phương pháp sử dụng các số có dấu với số nhị phân.
Việc chuyển đổi hai byte đó được thực hiện bằng một số phép toán đơn giản. Khi lấy mẫu ở 15 SPS, giá trị được trả về bởi ADS1110 (không phải điện áp) rơi vào khoảng -32768 đến 32767. Byte cao hơn của giá trị được nhân với 256, sau đó được thêm vào byte thấp hơn - sau đó được nhân với 2.048 và cuối cùng chia cho 32768. Đừng hoảng sợ, vì chúng tôi làm điều này trong bản phác thảo ví dụ sắp tới.
Bước 4: Chế độ ADC một đầu
Trong chế độ này, bạn có thể đọc điện áp rơi vào khoảng từ 0 đến 2.048 V (cũng là điện áp tham chiếu có sẵn cho ADS1110). Mạch ví dụ rất đơn giản (từ bảng dữ liệu).
Đừng quên các điện trở kéo lên 10kΩ trên bus I2C. Bản phác thảo sau sử dụng ADS1110 ở chế độ mặc định và chỉ cần trả về điện áp đo được:
// Ví dụ 53.1 - Vôn kế một mặt ADS1110 (0 ~ 2.048VDC) #include "Wire.h" #define ads1110 Điện áp phao 0x48, dữ liệu; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // đảm bảo tất cả dữ liệu đều có trong {highbyte = Wire.read (); // byte cao * B11111111 lowbyte = Wire.read (); // byte thấp configRegister = Wire.read (); }
dữ liệu = highbyte * 256;
data = data + lowbyte; Serial.print ("Dữ liệu >>"); Serial.println (dữ liệu, DEC); Serial.print ("Điện áp >>"); điện áp = dữ liệu * 2.048; điện áp = điện áp / 32768.0; Serial.print (điện áp, DEC); Serial.println ("V"); chậm trễ (1000); }
Bước 5:
Sau khi tải lên, hãy kết nối tín hiệu để đo và mở màn hình nối tiếp - bạn sẽ thấy một thứ tương tự như hình ảnh màn hình nối tiếp được hiển thị trong bước này.
Nếu bạn cần thay đổi mức khuếch đại của bộ khuếch đại khuếch đại có thể lập trình bên trong của ADC - bạn sẽ cần ghi một byte mới vào thanh ghi cấu hình bằng cách sử dụng:
Wire.beginTransmission (ads1110); Wire.write (byte cấu hình); Wire.endTransmission ();
trước khi yêu cầu dữ liệu ADC. Đây sẽ là 0x8D, 0x8E hoặc 0x8F cho các giá trị khuếch đại tương ứng là 2, 4 và 8 - và sử dụng 0x8C để đặt lại ADS1110 về mặc định.
Bước 6: Chế độ ADC vi sai
Trong chế độ này, bạn có thể đọc sự khác biệt giữa hai điện áp mà mỗi điện áp rơi vào khoảng từ 0 đến 5 V. Mạch ví dụ rất đơn giản (từ bảng dữ liệu).
Chúng tôi phải lưu ý ở đây (và trong bảng dữ liệu) rằng ADS1110 không thể chấp nhận điện áp âm trên một trong hai đầu vào. Bạn có thể sử dụng bản phác thảo trước đó để có kết quả tương tự - và điện áp thu được sẽ là giá trị của Vin- trừ đi cho Vin +. Ví dụ, nếu bạn có 2 V trên Vin + và 1 V trên Vin- điện áp kết quả sẽ là 1 V (với mức tăng được đặt thành 1).
Một lần nữa, chúng tôi hy vọng bạn thấy điều này quan tâm và có thể hữu ích. Bài đăng này do pmdway.com mang đến cho bạn - mọi thứ dành cho các nhà sản xuất và những người đam mê điện tử, với giao hàng miễn phí trên toàn thế giới.
Đề xuất:
Cách tạo cảm giác hiện tại của ADC: 5 bước
Cách tạo cảm giác dòng điện ADC: Trong Tài liệu hướng dẫn này, chúng tôi sẽ mô tả cách triển khai bộ chuyển đổi tương tự-kỹ thuật số (ADC) 8 bit trong SLG46855V có thể cảm nhận dòng điện tải và giao tiếp với MCU thông qua I2C. Thiết kế này có thể được sử dụng cho các ứng dụng cảm biến hiện tại khác nhau như
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
7 phân đoạn để hiển thị Giá trị ADC #Arduino, #Arduino: 4 bước
7-segment để Hiển thị Giá trị ADC #Arduino, #Arduino: Trong bài này mình sẽ làm một dự án vẫn liên quan đến bài trước. Xử lý cụ thể dữ liệu ADC. Vì vậy, bạn không cần màn hình nối tiếp để xem giá trị của dữ liệu adc. trong bài viết này, tôi sẽ hiển thị một trình xem Giá trị ADC. vì vậy bạn không '
Arduino và PCF8591 ADC DAC IC: 7 bước
Arduino và PCF8591 ADC DAC IC: Bạn đã bao giờ muốn có nhiều chân đầu vào tương tự hơn trên dự án Arduino của mình, nhưng không muốn tách ra cho Mega? Hay bạn muốn tạo tín hiệu tương tự? Sau đó, hãy xem chủ đề của hướng dẫn của chúng tôi - IC NXP PCF8591. Nó giải quyết được cả hai vấn đề này
Phát các bài hát với Arduino bằng cách sử dụng ADC đến PWM trên Flyback Transformer hoặc Loa: 4 bước
Phát các bài hát với Arduino bằng cách sử dụng ADC để PWM trên Flyback Transformer hoặc Loa: Xin chào các bạn, Đây là phần thứ hai của một tài liệu hướng dẫn khác của tôi (điều đó rất khó), Về cơ bản, trong Dự án này, tôi đã sử dụng ADC và TIMERS trên Arduino của mình để chuyển đổi Tín hiệu Âm thanh thành Tín hiệu PWM. Điều này dễ dàng hơn nhiều so với Bài hướng dẫn trước đây của tôi