Mục lục:
- Bước 1: Tạo bộ đếm đầu vào
- Bước 2: Tạo dải phân cách đồng hồ LED
- Bước 3: Tạo Bộ điều khiển LED
- Bước 4: Thiết lập các ràng buộc và lắp ráp
- Bước 5: Sử dụng công tắc Dimmer của bạn
Video: Đèn LED có thể điều chỉnh độ sáng sử dụng Bảng điều khiển Basys 3: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Trong hướng dẫn này, chúng tôi sẽ xây dựng và điều khiển hệ thống làm mờ LED bên ngoài. Với các nút có sẵn, người dùng có thể làm mờ bóng đèn LED đến bất kỳ độ sáng mong muốn nào. Hệ thống sử dụng bảng Basys 3 và nó được kết nối với bảng mạch có chứa điện trở và bóng đèn LED. Nhấn nút "lên" được chỉ định sẽ tăng độ sáng và nhấn nút "xuống" sẽ giảm độ sáng về 0. Điều này không chỉ giúp người dùng không bị lóa mắt bởi bóng đèn sáng như mặt trời mà còn tiết kiệm năng lượng!
Bước 1: Tạo bộ đếm đầu vào
Đối với bước này, chúng tôi tạo thành phần xác định mức độ sáng (thông qua đồng hồ) bằng cách sử dụng hai công tắc: một để tăng và một để giảm. Sử dụng VHDL, chúng tôi đã sản xuất bộ đếm thông qua việc sử dụng dép xỏ ngón D. Nhấn nút "lên" sẽ đẩy trạng thái tiếp theo sang trạng thái hiện tại, xuất ra màn hình bảy đoạn và bóng đèn LED.
thực thể updown_counter mới là
Port (current_state: out STD_LOGIC_VECTOR (3 xuống 0); trước_state: trong STD_LOGIC_VECTOR (3 xuống 0); next_state: trong STD_LOGIC_VECTOR (3 xuống 0); clk: trong STD_LOGIC; down_enable: trong STD_LOGIC; lên_enable: trong STD_LOGIC); end updown_counter; kiến trúc Hành vi của updown_counter là bắt đầu thất bại: process (next_state, clk, up_enable, down_enable, before_state) begin if (ising_edge (clk)) then if (up_enable = '1' and not (next_state = "0000")) then present_state <= trạng_thái tiếp theo; elsif (down_enable = '1' and not (before_state = "1111")) then present_state <= before_state; kết thúc nếu; kết thúc nếu; kết thúc quá trình thất bại; cuối Hành vi;
Chúng tôi cũng cần một đồng hồ cho mỗi đầu vào được chốt vào (khi nó tăng lên), vì vậy chúng tôi cũng tạo một bộ chia đồng hồ để xác định tốc độ có thể nhấn các nút giữa mỗi mức độ sáng. Bộ chia đồng hồ này cho phép chúng tôi hiển thị đúng mức phù hợp trên màn hình bảy phân đoạn và tạo ra mức cường độ phù hợp cho mỗi mức.
thực thể counter_clkDiv mới là
Port (clk: in std_logic; sclk: out std_logic); end counter_clkDiv; kiến trúc my_clk_div của counter_clkDiv là hằng số max_count: integer: = (10000000); tín hiệu tmp_clk: std_logic: = '0'; begin my_div: process (clk, tmp_clk) biến div_cnt: integer: = 0; begin if (ising_edge (clk)) then if (div_cnt> = MAX_COUNT) then tmp_clk <= not tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; kết thúc nếu; kết thúc nếu; sclk <= tmp_clk; kết thúc quá trình my_div; end my_clk_div;
Bước 2: Tạo dải phân cách đồng hồ LED
Đối với bước này, chúng tôi tạo một bộ chia đồng hồ cho bóng đèn LED để xác định 16 mức cường độ khác nhau. Với 0 được tắt đến 15 hiển thị độ sáng tối đa, vạch chia đồng hồ tăng mỗi lần nhấn nút bằng những gì chúng tôi đặt là các mức độ sáng. Mỗi mức tăng đồng nghĩa với việc tăng đồng hồ cho bóng đèn LED. Hãy nhớ rằng độ sáng không tăng tuyến tính, chúng tôi đã xoay đồng hồ lên mức cao nhất có thể và giảm đồng hồ của chúng tôi tương ứng.
Lưu ý: chúng tôi đang sử dụng đèn LED màu xanh lam. Sử dụng một màu khác (như màu đỏ) sẽ yêu cầu đồng hồ hơi khác một chút; cài đặt độ sáng trung bình cho màu xanh lam đã có thể là độ sáng tối đa cho màu đỏ. Điều này xảy ra vì các bước sóng ánh sáng khác nhau sẽ yêu cầu lượng năng lượng khác nhau, với các màu lạnh hơn như tím và xanh lam cần nhiều năng lượng hơn, trong khi các màu ấm hơn như đỏ và cam cần ít năng lượng hơn.
thực thể led_clkDiv là Port (current_state: in STD_LOGIC_VECTOR (3 xuống 0); clk: in STD_LOGIC; led_clk: out STD_LOGIC); end led_clkDiv; Kiến trúc Hành vi của led_clkDiv là tín hiệu tmp_clk: std_logic: = '0'; biến chia sẻ max_count: integer; begin count_stuff: process (present_state) bắt đầu trường hợp hiện_state là khi "0000" => max_count: = 0; khi "0001" => max_count: = 2; khi "0010" => max_count: = 4; khi "0011" => max_count: = 6; khi "0100" => max_count: = 8; khi "0101" => max_count: = 10; khi "0110" => max_count: = 12; khi "0111" => max_count: = 14; khi "1000" => max_count: = 16; khi "1001" => max_count: = 25; khi "1010" => max_count: = 50; khi "1011" => max_count: = 100; khi "1100" => max_count: = 150; khi "1101" => max_count: = 200; khi "1110" => max_count: = 250; khi "1111" => max_count: = 300; trường hợp kết thúc; kết thúc quy trình đếm_thước; my_div: process (clk, tmp_clk, present_state) biến div_cnt: integer: = 0; bắt đầu if (tăng_edge (clk)) sau đó if (div_cnt> = max_count) then tmp_clk <= not tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; kết thúc nếu; kết thúc nếu; led_clk <= tmp_clk; kết thúc quá trình my_div; cuối Hành vi;
Bước 3: Tạo Bộ điều khiển LED
Bây giờ chúng tôi đã làm được điều đó đến nay, cuối cùng đã đến lúc kết hợp tất cả các thành phần mà chúng tôi đã tạo cho đến nay vào tệp Bộ điều khiển LED.
Tóm lại, các thành phần được sử dụng như sau:
- Bộ đếm đầu vào (updown_counter)
- Bộ chia đồng hồ (counter_clkDiv)
- Bộ chia đồng hồ LED (led_clkDiv)
- Trình điều khiển hiển thị bảy đoạn (sseg_dec) (tệp đính kèm)
Trình điều khiển hiển thị bảy đoạn thực sự không được thảo luận trước đây vì chúng tôi thực sự đã mượn tệp VHDL từ Tiến sĩ Bryan Mealy do mã dài và phức tạp của nó. Những gì nó thực hiện về cơ bản là điều khiển các đầu vào nút của chúng tôi đến màn hình bảy phân đoạn trên bảng Basys 3 để chúng tôi biết mức độ sáng đang bật.
Về phía trước, Bộ điều khiển LED sử dụng flip flops để tăng hoặc giảm số lượng điều khiển đồng thời cả hiển thị bảy đoạn và mức độ sáng của bóng đèn LED.
bộ đếm thực thể là Cổng (clk: trong STD_LOGIC; up_enable: trong STD_LOGIC; xuống_enable: trong STD_LOGIC; SEGMENTS: ra STD_LOGIC_VECTOR (7 xuống 0); DISP_EN: ra STD_LOGIC_VECTOR (3 xuống 0); led_clk: ra STD_LOGIC); bộ đếm cuối; kiến trúc Hành vi của bộ đếm là thành phần updown_counter là Port (current_state: out STD_LOGIC_VECTOR (3 down xuống 0); trước_state: in STD_LOGIC_VECTOR (3 down xuống 0); next_state: in STD_LOGIC_VECTOR (3 down xuống 0); clk: in STD_OG_LOGIC: xuống STD_LOGIC: trong STD_LOGIC); up_enable: trong STD_LOGIC); thành phần cuối updown_counter; thành phần counter_clkDiv là Port (clk: in std_logic; sclk: out std_logic); thành phần cuối counter_clkDiv; component sseg_dec là Port (ALU_VAL: in std_logic_vector (7 downto 0); SIGN: in std_logic; VALID: in std_logic; CLK: in std_logic; DISP_EN: out std_logic_vector (3 downto 0); SEGMENTS: out std_logic_ 0); thành phần cuối sseg_dec; component led_clkDiv là Port (current_state: in STD_LOGIC_VECTOR (3 xuống 0); clk: in STD_LOGIC; led_clk: out STD_LOGIC); thành phần cuối led_clkDiv; signal present_state: STD_LOGIC_VECTOR (3 xuống 0): = "0000"; signal next_state: STD_LOGIC_VECTOR (3 xuống 0): = "0000"; signal before_state: STD_LOGIC_VECTOR (3 xuống 0): = "0000"; signal Alu_Val: STD_LOGIC_VECTOR (7 xuống 0); tín hiệu sclk: STD_LOGIC; begin Alu_Val (7 xuống 4) <= "0000"; Alu_Val (3 xuống 0) <= current_state; tiếp theo (0) <= not (nay_state (0)); next_state (1) <= current_state (0) xor present_state (1); next_state (2) <= (current_state (0) and present_state (1)) xor present_state (2); next_state (3) <= (current_state (0) and present_state (1) and present_state (2)) xor present_state (3); trước_state (0) <= not (current_state (0)); ngày_trước (1) <= ngày_triển_triển (0) xnor_ngày_bệnh (1); before_state (2) <= (current_state (0) hay present_state (1)) xor present_state (2); before_state (3) sclk, next_state => next_state, before_state => before_state, up_enable => up_enable, down_enable => down_enable, present_state => present_state); display: sseg_dec port map (ALU_VAL => Alu_Val, SIGN => '0', VALID => '1', CLK => clk, DISP_EN => DISP_EN, SEGMENTS => SEGMENTS); led_div: bản đồ cổng led_clkDiv (clk => clk, present_state => present_state, led_clk => led_clk); clk_div: bản đồ cổng counter_clkDiv (clk => clk, sclk => sclk); cuối Hành vi;
Bước 4: Thiết lập các ràng buộc và lắp ráp
Hạn chế
Để thiết lập và lập trình bo mạch Basys 3 đúng cách, trước tiên chúng ta phải thiết lập tệp ràng buộc được đính kèm ở bước này. Các cài đặt sau đã được điều chỉnh:
nút
- Đã thay đổi T18 thành "up_enable" (tăng độ sáng)
- Đã thay đổi U17 thành "down_enable" (giảm độ sáng)
7 phân đoạn hiển thị
- W7, W6, U8, V8, U5, V5, U7, V7 đại diện cho mỗi phân đoạn của một màn hình
- U2, U4, V4, W4 đại diện cho mỗi cực dương được hiển thị (chỉ có 2 là hoạt động vì số cao nhất của chúng tôi là 15)
PMOD Header JC
JC7 là nơi chúng tôi kết nối một trong các dây của bóng đèn LED và dây còn lại dẫn đến GROUND
Sau khi thiết lập xong, tất cả những gì bạn phải làm là tạo dòng bit của mình (với bất kỳ phần mềm nào bạn đang sử dụng, tức là Vivado), lập trình bảng của bạn và bùng nổ! Bạn đã có cho mình một bảng làm việc.
Lưu ý: Bạn có thể tìm thấy ánh xạ pin trên Biểu dữ liệu Basys 3 tại đây.
cuộc họp
Bước 5: Sử dụng công tắc Dimmer của bạn
Nếu mọi việc suôn sẻ, bạn nên có một hệ thống điều chỉnh độ sáng hoạt động đầy đủ. Tóm lại, nhấn nút trên cùng sẽ tăng độ sáng của bạn (tất cả các cách lên 15) và nhấn nút xuống sẽ giảm độ sáng của bạn (tất cả các cách về 0). Hy vọng mọi việc suôn sẻ cho thị lực của bạn bây giờ thoải mái!
Đề xuất:
Nguồn điện DC có thể điều chỉnh được bằng cách sử dụng bộ điều chỉnh điện áp LM317: 10 bước
Bộ nguồn DC điều chỉnh điện áp sử dụng bộ điều chỉnh điện áp LM317: Trong đồ án này, em đã thiết kế một bộ nguồn DC có điện áp điều chỉnh đơn giản sử dụng IC LM317 với sơ đồ mạch nguồn LM317. Vì mạch này có một bộ chỉnh lưu cầu có sẵn nên chúng ta có thể kết nối trực tiếp nguồn AC 220V / 110V ở đầu vào.
Đèn xe đạp rất sáng sử dụng bảng điều khiển ánh sáng tùy chỉnh PCB: 8 bước (có hình ảnh)
Đèn xe đạp rất sáng sử dụng bảng điều khiển ánh sáng tùy chỉnh PCB: Nếu bạn sở hữu một chiếc xe đạp thì bạn sẽ biết những ổ gà khó chịu có thể ảnh hưởng đến lốp xe và thân xe của bạn như thế nào. Tôi đã làm nổ lốp xe quá đủ rồi nên tôi quyết định thiết kế bảng điều khiển đèn led của riêng mình với mục đích sử dụng nó như một chiếc đèn xe đạp. Một trong đó tập trung vào việc trở thành E
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Bảng điều khiển LED có thể điều chỉnh độ sáng: 15 bước (có hình ảnh)
Bảng điều khiển LED có thể điều chỉnh độ sáng: Khi tôi xem cuộc thi đèn LED, tôi đã suy nghĩ xem có điều gì thú vị khi sử dụng đèn LED đó không. Tôi không thực sự là một chàng trai điện nên tôi nghĩ đó sẽ là một thử thách thú vị. Tôi đã tìm kiếm một chiếc đèn làm việc trong một thời gian để
Tạo một bộ điều khiển sương giá rẻ bằng cách sử dụng bộ điều chỉnh độ sáng LED: 3 bước
Chế tạo bộ điều khiển sương giá rẻ sử dụng bộ điều chỉnh độ sáng LED: Sau khi làm chập một máy sấy tóc 12 Volt mà tôi đã sử dụng để ngăn sương tại một bữa tiệc sao vài tháng trước, tôi nghĩ đã đến lúc phải mua một bộ điều khiển sương thực sự và một bộ sưởi sương cho phạm vi của mình Một bộ điều khiển sương trung bình có giá hơn 100 Euro (hoặc US D