ENCYCLOPEDIA VỀ ĐIỆN TỬ TRUYỀN THANH VÀ KỸ THUẬT ĐIỆN Arduino. Hoạt động của đầu vào-đầu ra tương tự, hoạt động với âm thanh. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện / Đài thiết kế nghiệp dư Mặc dù các hoạt động đầu vào-đầu ra kỹ thuật số cho phép giải quyết nhiều vấn đề, nhưng sự hiện diện của bộ chuyển đổi tương tự sang số (ADC) tích hợp trong bộ vi điều khiển của bo mạch Arduino và khả năng xuất tín hiệu tương tự bằng cách sử dụng điều chế độ rộng xung ( (PWM) đảm bảo hoạt động với các cảm biến analog và tất cả các loại cơ cấu chấp hành, tác động lên đối tượng theo tỷ lệ với tín hiệu điều khiển. Nói đúng ra, ở chế độ đầu ra, tất cả các dòng cổng Arduino chỉ có thể truyền các tín hiệu rời rạc chỉ có hai trạng thái. Nhưng bộ vi điều khiển có khả năng thay đổi những trạng thái này rất nhanh, tạo ra các xung hình chữ nhật. Nếu các xung này được áp dụng cho bất kỳ thiết bị nào có đặc tính quán tính thì thiết bị đó sẽ bắt đầu hoạt động như thể điện áp cung cấp cho nó không đổi, bằng giá trị trung bình của xung và thay đổi trơn tru và không nhảy vọt giữa cao và thấp. các mức logic. Ở chế độPWM, cổng tạo ra tín hiệu xung có tần số không đổi và chu kỳ nhiệm vụ thay đổi (đây là tỷ lệ giữa thời gian lặp lại xung với thời lượng của chúng). Thông thường, thay vì chu kỳ nhiệm vụ, chúng hoạt động với giá trị nghịch đảo của nó - chu kỳ nhiệm vụ, có thể thay đổi từ 0 (không có xung) đến 100% (các xung theo sau, hợp nhất, không tạm dừng). Do đó, mặc dù tại bất kỳ thời điểm nào, điện áp đầu ra tương ứng với mức logic cao hay thấp, giá trị trung bình của nó tỷ lệ thuận với chu kỳ làm việc. Nếu bạn kết nối đồng hồ vạn năng thông thường với đầu ra này, nó sẽ hiển thị giá trị này (tất nhiên, nếu tần số xung đủ cao). Trong Arduino UNO, các đầu ra D3, D5, D6, D9, D10 và D11 có thể hoạt động ở chế độPWM. Chúng thường được đánh dấu trên bảng bằng dấu "~" hoặc chữ viết tắt "PWM". Cần lưu ý rằng bo mạch Arduino của các sửa đổi khác có thể có ít nhiều kết quả đầu ra như vậy. Trong trường hợp đơn giản nhất, có thể sử dụng xung điều khiển độ sáng của đèn LED. Thiết bị này thực tế không có quán tính, nhưng tầm nhìn của con người có đủ quán tính để một chuỗi đèn LED nhấp nháy nhanh được coi là ánh sáng rực rỡ liên tục với độ sáng tùy thuộc vào hệ số lấp đầy. Các đầu ra rời rạc có khả năng tạo ra xung điện xung được cấu hình để sử dụng chế độ này theo mặc định, do đó không cần phải gọi hàm pinMode() để vận hành chúng ở chế độ này. Để đặt chu kỳ nhiệm vụ của tín hiệuPWM, có một hàm tiêu chuẩn analogWrite(N,M), trong đó N là số chân, M là số tỷ lệ thuận với chu kỳ nhiệm vụ yêu cầu. Nó phải nằm trong khoảng từ 0 đến 255, với 0 tương ứng với chu kỳ nhiệm vụ bằng 255 (mức thấp không đổi ở đầu ra), chu kỳ nhiệm vụ 100 - 1% (mức cao không đổi ở đầu ra). Sơ đồ thời gian của điện áp đầu ra ở các giá trị nhất định của M và theo đó, chu kỳ làm việc ngắn mạch được thể hiện trong Hình. XNUMX.
Ví dụ, hãy xem xét cái được đưa ra trong bảng. 1 chương trình tăng dần độ sáng của đèn LED được kết nối với đầu ra kỹ thuật số D9, sau đó giảm dần. Nó dựa trên example3.AnalogFading tiêu chuẩn đi kèm với Arduino IDE. Việc liệt kê các giá trị chu kỳ nhiệm vụ xung được triển khai ở đây bằng cách sử dụng các toán tử vòng lặp for đã được thảo luận trong [1]. Таблица 1. Để nhận tín hiệu tương tự từ các thiết bị bên ngoài trong Arduino, đầu vào A0-A5 được thiết kế theo mặc định được đặt ở trạng thái cần thiết cho việc này, do đó không cần khởi tạo thêm. ADC được tích hợp trong Arduino UNO tạo mã nhị phân 10 bit và chuyển đổi điện áp đầu vào, nằm trong phạm vi từ 0 đến +5 V, thành số nguyên từ 0 đến 1023 (210-1). Để đọc kết quả chuyển đổi, hãy sử dụng hàm analogRead(N), trong đó N là số đầu vào tương tự. Bạn có thể kết nối nhiều loại cảm biến với đầu vào analog của Arduino, điện áp đầu ra tỷ lệ thuận với giá trị đo được (điện trở thay đổi, điện trở nhiệt, điện trở quang, v.v.). Tuy nhiên, phải nhớ rằng đầu vào analog chỉ có thể được cung cấp điện áp từ 0 đến +5 V. Nếu điện áp đầu ra của cảm biến nằm trong một phạm vi khác hoặc có cực tính âm thì trước tiên tín hiệu phải được đặt trong phạm vi được chỉ định. phạm vi. Đầu vào tương tự được thăm dò ở tốc độ dưới 10 kHz [2], có thể không đủ để phân tích một số tín hiệu thay đổi nhanh chóng. Sự hiện diện của đầu vào analog cho phép bạn biến Arduino thành một vôn kế kỹ thuật số đơn giản để đo điện áp DC từ 0 đến +5 V và truyền kết quả đo đến máy tính. Để làm điều này, chỉ cần tải chương trình trong bảng vào Arduino. 2. Bảng 2 Xin lưu ý rằng trong chương trình, điện áp ADC tham chiếu Uref (tính bằng milivolt) và hệ số chuyển đổi của mã đầu ra ADC thành điện áp Ku được chỉ định là hằng số. Giá trị của hệ số được tính bằng cách chia điện áp tham chiếu đã cho cho 1023. Hệ số này thường là phân số nên hằng số Ki có kiểu float (số dấu phẩy động). Hằng số Uref có cùng loại để tính toán chính xác hệ số. Vì phía bên phải của công thức chỉ chứa các hằng số nên hệ số không được tính bởi bộ vi điều khiển khi thực hiện chương trình mà do chính trình biên dịch ở giai đoạn dịch mã. Tất cả điều này cho phép bạn tăng độ chính xác của vôn kế bằng cách đo bằng đồng hồ vạn năng giá trị chính xác của điện áp tham chiếu ở chân Uref của bo mạch Arduino và ghi nó vào chương trình, gán nó cho hằng số Uref. Bạn có thể đọc về các cách khác để cải thiện độ chính xác của việc chuyển đổi analog sang digital trong [3, 4]. Khi chương trình đang chạy, đèn LED TX trên bo mạch sẽ nhấp nháy, báo hiệu việc truyền thông tin qua cổng nối tiếp. Đèn LED RX không sáng vì máy tính không gửi lại bất cứ thứ gì. Thiết bị đầu cuối Arduino IDE tích hợp hiển thị thông tin nhận được (Hình 2) - kết quả đo điện áp của pin điện 3332.
Arduino không chỉ có thể cung cấp ánh sáng mà còn cung cấp tín hiệu âm thanh. Để thực hiện việc này, bạn cần kết nối bộ phát âm thanh áp điện, chẳng hạn như ZP-1, với một trong các đầu ra của nó (Hình 3).
Để làm việc với âm thanh, một chức năng đặc biệt được cung cấp: âm(N, F, T), trong đó N là số chân mà các xung hình chữ nhật sẽ được tạo ra; F - tần số âm thanh, Hz; T - thời lượng âm thanh, ms. Tham số cuối cùng là tùy chọn. Khi vắng mặt nó, âm thanh sẽ liên tục. Để tắt nó, hàm noTone(N) được cung cấp. Tất nhiên, bộ phát âm thanh áp điện khó có thể được gọi là thiết bị phát lại chất lượng cao và tín hiệu do vi điều khiển tạo ra có hình chữ nhật, tuy nhiên, việc sử dụng các chức năng này cho phép bạn phát các giai điệu đơn giản. Một ví dụ được đưa ra trong bảng. 3. Đây là một ví dụ về chương trình được sửa đổi một chút 02.Digital oneMelody, có trong Arduino IDE. Vì việc đặt tần số của từng nốt của giai điệu theo cách thủ công là bất tiện nên tệp pitches.h được đính kèm vào chương trình trong tiêu đề của nó bằng cách sử dụng lệnh #include. Thao tác này tương đương với việc đưa toàn bộ nội dung của tệp này vào chương trình. Trong trường hợp này, nó chứa danh sách tên của các nốt có thể chơi và tần số của chúng. Bảng 3 Bộ phát âm thanh phải được kết nối với đầu ra D8. Đối với một chương trình, giai điệu là một chuỗi các hằng số cùng loại (giá trị tần số), được kết hợp một cách thuận tiện thành một mảng - một danh sách đánh số các phần tử cùng loại. Khi khai báo một mảng, bạn phải liệt kê tất cả các phần tử của mảng đó hoặc cho biết tổng số phần tử của chúng. Xin lưu ý rằng việc đánh số các phần tử mảng luôn bắt đầu từ số 0. Trong ví dụ đang xem xét, hai mảng được sử dụng: int giai điệu[] chứa tên của các nốt giai điệu, int note Duration[] - thời lượng của chúng tính bằng mili giây. Để tham chiếu đến một phần tử mảng, hãy chỉ ra tên của nó bằng số sê-ri được đặt trong dấu ngoặc vuông. Để có thể dễ dàng thay đổi số lượng nốt trong một giai điệu, nó được tính toán bằng cách sử dụng các hàm sizeof(V), trả về số byte bị chiếm bởi đối số của nó (biến hoặc mảng của chúng) trong bộ nhớ vi điều khiển. Trong trường hợp này, mảng giai điệu chiếm 16 byte và độ dài của các phần tử int của nó là hai byte. Do đó, biến Note nhận giá trị 8 và đây là số lần phần thân của vòng lặp for sẽ được lặp lại, lần lượt chơi từng nốt. Nếu bạn thêm nhiều nốt vào mảng giai điệu[], giá trị nốt sẽ thay đổi tương ứng. Bạn chỉ cần nhớ thêm mảng noteDurations[] với thời lượng của các ghi chú này. Vì giai điệu chỉ được thực hiện một lần nên tất cả các thao tác cần thiết đều được đặt bên trong hàm setup(). Để thực hiện lại, bạn cần reset vi điều khiển về trạng thái ban đầu bằng cách nhấn nút RESET nằm trên board Arduino Bạn có thể tải xuống các chương trình dành cho Arduino được thảo luận trong bài viết từ ftp://ftp.radio.ru/pub/2016/09/aninout.zip. Văn chương
Tác giả: D. Lekomtsev Xem các bài viết khác razdela Đài thiết kế nghiệp dư. Đọc và viết hữu ích bình luận về bài viết này. Tin tức khoa học công nghệ, điện tử mới nhất: Một cách mới để kiểm soát và điều khiển tín hiệu quang
05.05.2024 Bàn phím Primium Seneca
05.05.2024 Khai trương đài quan sát thiên văn cao nhất thế giới
04.05.2024
Tin tức thú vị khác: ▪ Nhiên liệu điện nano để sạc lại pin vô hạn ▪ Robot hút bụi Samsung POWERbot VR7000 ▪ Sách điện tử Amazon Kindle DX ▪ Không phải căng thẳng là nguy hiểm, mà là phản ứng với nó ▪ Từ ngữ và màu sắc cảm xúc của chúng Nguồn cấp tin tức khoa học và công nghệ, điện tử mới
Tài liệu thú vị của Thư viện kỹ thuật miễn phí: ▪ phần của trang web Giao thông cá nhân: đất, nước, không khí. Lựa chọn bài viết ▪ bài báo Ánh sáng như một thành phần của quay video. video nghệ thuật ▪ bài viết Hầu hết cư dân sống trong một ngôi nhà ở thành phố nào? đáp án chi tiết ▪ bài viết Thắt thòng lọng. Các lời khuyên du lịch
Để lại bình luận của bạn về bài viết này: Tất cả các ngôn ngữ của trang này Trang chủ | Thư viện | bài viết | Sơ đồ trang web | Đánh giá trang web www.diagram.com.ua |