1. Introduction
In modern industrial production and high-precision testing, we need quite precise frequencies to help judge equipment performance indicators. And we want to be able to fine-tune that frequency. The frequency obtained by using a voltage-controlled oscillator is not accurate enough, and the steps to fine-tune the frequency are cumbersome and time-consuming. Therefore, some test items limit the use of voltage-controlled oscillators.
The Mega series of microcontrollers have been launched by Atmel since 2002. This AVR enhanced microcontroller has many advantages such as fast speed, strong anti-interference ability, and low price. In order to speed up the software compilation of AVR microcontrollers, Atmel and third parties provide a variety of development tools, making program development convenient and effective. The internal FLASH structure of the microcontroller has flexible functions and is difficult to decrypt after being locked, which can protect intellectual property rights to the maximum extent. AVR microcontrollers can be widely used in communications, field testing, automotive electronics, medical equipment and other fields, and are suitable for various low voltage and low power consumption occasions. ?
This article proposes a method based on the AVR microcontroller, using the AD9850 to provide a frequency signal accurate to 1Hz. It can generate not only sine waves, but also square waves, thus solving problems for companies that require high frequency accuracy. It uses Atmel's AVR microcontroller Atmega16L as the core and can control the output frequency conveniently and accurately. Since the AVR microcontroller is online programmable, the design steps are greatly simplified and the design process is accelerated. At the same time, the chip will not be burned or burned, thus saving costs. ?
Figure 1 shows the overall design block diagram of the frequency regulator. The user sets the frequency value through the 4×4 keyboard, and the AVR microcontroller uses the I/O port to scan and read the frequency value. Then the AVR microcontroller controls the AD9850 to adjust to the frequency required by the user. The output of the AD9850 can be connected to a voltage comparator to shape it into a square wave, or it can limit the bandwidth through a low-pass filter to output a sine waveform. The AVR microcontroller also controls the LCD module to display the current frequency in real time.
Figure 1. Overall block diagram of frequency regulator
2. Control core and frequency generation technology
2.1. Control core
This design uses Atmel's AVR microcontroller Atmega16L as the control core. The single-cycle instructions of the AVR microcontroller can ensure high execution efficiency and low cost, and it is a high-performance device in the reduced instruction set CPU. The AVR microcontroller can provide an execution time of up to 16 MIPS, has a programmable Flash memory of 128K bytes, and has a static RAM of 4096 bytes. The AVR microcontroller comes with a watchdog timer, which can prevent the program from running away under strong electromagnetic interference conditions. The Atmega16L used in this design also has the following features:
·???Contains a hardware multiplier internally to speed up the multiplication operation; the number of I/O port pins is up to 32; ··
???Supports online programmable functions, There is no need to frequently plug and unplug chips from the circuit board; it has a programmable UART port that supports synchronous transmission;
·????Supports three-wire transmission SPI port; it has a convenient I2C bus port that can be directly connected to the Philips chip;
·?? ?Supports JTAG boundary scan circuit; has BOD low voltage detection function;
·???There are 8-channel 10-bit A/D converters inside; 4 PMWs can work collaboratively or individually;
·??Internal real-time clock Circuit; operating frequency up to 16MHz.
2.2? AD9850 frequency generation technology
??? AD9850 is a low-power direct digital frequency synthesizer chip launched by AD Company. It can generate wide frequency signals from DC to 62.5MHz. It has been used in radar systems and low-power systems since it was put on the market. consumption frequency source. Its good frequency synthesis function is suitable for application in high-precision testing. This design uses AD9850 as the waveform generator, which has the advantages of small size and low power consumption.
?? In the control process, the AVR microcontroller calculates the frequency control word for the AD9850 and writes the frequency control word into it. Combined with the "+1Hz" key and the "-1Hz" key on the small keyboard, this design allows the frequency to be adjusted accurately to a step of 1Hz. It can generate square waves and sine waves. When users require the generation of sine waves, we design a low-pass filter to filter out the high-frequency components of the signal. This low-pass filter can also be implemented using a fifth-order elliptical filter. Figure 2 shows the AD9850 circuit design diagram of this system. PC2-PC5 can also be used as an I2C bus port.
Figure 2 AD9850 circuit design
3. Input device and output device
3.1. Keyboard input device and corresponding software
??? This design uses a 4×4 keyboard as the frequency input device. Since the number of buttons is small, only 16, and it needs to represent a wide range of frequencies from 1Hz to 10MHz, the AVR microcontroller scanning method is used in the software design. Use all 8 I/O pins of port A as a scanning keyboard. In addition to a total of 10 numbers from 0 to 9, the keyboard definition also defines the "backspace" key, "delete all" key, "enter" key, "+1Hz" key and "-1Hz" key, so that you can Dadi facilitates users to modify the frequency and fine-tune the frequency at any time. When reading the frequency value input by the user, a delay anti-shake and anti-interference software program is used. The initial value of the scan variable is set to 0xFE, and the scan is implemented by changing the low level to 0. The C code scanned by the keyboard of this microcontroller is as follows:
??????????sccode=0xFE;/*every?scan?initiative?value,11111110*/
?????????? ??while(sccode!=0xEF)/*sccode?is?not?11101111,follow;or?return?0*/
?????????{
???????? ???????PORTA=sccode;/*send?scan?code?11111110?to?portA*/
?????????????PORTA=sccode;/*send? scan?code?11111110?to?portA*/
????????????????if((PINA&0xF0)!=0xF0)/*read?portA,if?high?4?bits? are?not?1111,key?pressed?in?this?line*/
????????????????{
???????????????? ????recode=(PINA&0xF0)|0x0F;/*portA?high?4?bits?reserved,low?4?bits?are?1111*/
????????????? ????while((PINA&0xF0)!=0xF0)
????????????????{};
????????????? ???????/*read?portA,if?portA?high?4?bits?are?not?1111,key?pressed,
??????????????????? ???if?key?pressed,we?must?wait,wait?for?key?released*/
?????????????????????return((~sccode) +(~recode));/*return?row+column*/
????????????????}
?????????????else
???????????????{
???????????????????sccode=(sccode<<1)|0x01;
?? ???????????????/*scan?code?left?shift?1?bit,?add?1?to?right,11111101*/
?????? ??????????}
??????????}
????The scan result finally returned includes the row value and column value of the key. The judgment step is: first record the high 4 bits of port A in the scan variable recode, and set the low 4 bits to 1111. Read the high 4 bits of port A again to determine whether the button is released. When the user has not released the button, there is a low level 0 in the high 4 bits. At this time, the user can only wait in a loop. Only when the user releases the button, the high 4 bits and the low 4 bits are bitwise inverted and combined to form the final returned scan result. If no key press is detected, the scan variable sccode is shifted to the left by 1 bit and continues to the next scan.
3.2?LCD display module
??? After users perform input frequency and "+1Hz" and "-1Hz" fine-tuning many times, they focus on observing the impact of signal output on the next-level circuit, and often forget the output frequency of the current system. This leads to the fact that when fine-tuning is required during precise testing, it is not known whether to adjust it high or low. In order to inform the user of the current frequency of the system, we have expanded the LCD module to realize the real-time display of the current frequency on the LCD module. The LCD module occupies the PD0-PD7 of the single-chip computer Atmega16L as the data interface, and uses the PB0-PB4 of the single-chip computer as the control port. Figure 3 shows the circuit diagram of the liquid crystal display module and controller circuit design.
The PB0 pin selects the data memory or command memory of the LCD module. The PB1 pin indicates whether the operation is
to read or write the LCD module. PB2 constitutes the rising edge and falling edge to complete the reading and writing sequence. PB3 is responsible for selecting the left half of the LCD module, and PB4 is responsible for selecting the right half. Usually, PB3 and PB4 are both set to 1. It should be noted that after the data or instructions are ready, let PB2 change the level, otherwise reading and writing errors will occur.
?? This design uses the large-capacity program memory of the microcontroller Atmega16L to store the font lattice of English letters and several Chinese characters as an array into the program memory of the microcontroller. When a certain character needs to be displayed, the array is called directly, thus simplifying the design and realizing the display of English, Chinese characters and graphics. This design has a friendly display interface and strong operation controllability.
Figure 3 - LCD module and controller circuit design
4? Conclusion
??? In order to facilitate modern industrial production and accurate frequency testing, we designed a high-precision frequency regulator based on AVR microcontroller. In this design, you can use the "+1Hz" key and "-1Hz" key on the small keyboard to easily adjust the frequency accurate to 1Hz. This frequency regulator is small in size but powerful in function. It uses Atmel's AVR microcontroller Atmega16L as the control core. The user can adjust the system output frequency at any time. A 4×4 keyboard is used to input the frequency value set by the user, which occupies a small space and is highly efficient. The AVR microcontroller is programmed to scan and obtain the frequency, eliminating the need for a dedicated keyboard interface chip 8279. The LCD display module can display the current frequency in real time, with a friendly display interface and strong operation controllability. This system can generate square waves and sine waves.
?? The hardware and software of this design have been applied in a certain frequency test production line. Industrial production and test use show that this design simplifies the frequency adjustment process, is user-friendly, and has the characteristics of power saving, low cost, strong anti-interference ability, high frequency control accuracy and fast speed.
References
[1]?Atmel?Corporation.?8-bit?AVR?Microcontroller?with?16K?Bytes?In-System?Programmable?Flash?Atmega16L?data?sheet.?Atmel?Corporation,?2003:?3- 18.
[2]?Atmel?Data?Sheets.?http://www.atmel.com/dyn/products/devices.asp?family_id=607%20
[3]?Atmel?Application?Note.?http:/ /www.atmel.com/dyn/products/app_notes.asp?family_id=607
Previous article:Design of USB/PS2 MOUSE using 4BIT OTP microcontroller
Next article:Intelligent temperature control meter with communication port based on microcontroller
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- Innolux's intelligent steer-by-wire solution makes cars smarter and safer
- 8051 MCU - Parity Check
- How to efficiently balance the sensitivity of tactile sensing interfaces
- What should I do if the servo motor shakes? What causes the servo motor to shake quickly?
- 【Brushless Motor】Analysis of three-phase BLDC motor and sharing of two popular development boards
- Midea Industrial Technology's subsidiaries Clou Electronics and Hekang New Energy jointly appeared at the Munich Battery Energy Storage Exhibition and Solar Energy Exhibition
- Guoxin Sichen | Application of ferroelectric memory PB85RS2MC in power battery management, with a capacity of 2M
- Analysis of common faults of frequency converter
- In a head-on competition with Qualcomm, what kind of cockpit products has Intel come up with?
- Dalian Rongke's all-vanadium liquid flow battery energy storage equipment industrialization project has entered the sprint stage before production
- Allegro MicroSystems Introduces Advanced Magnetic and Inductive Position Sensing Solutions at Electronica 2024
- Car key in the left hand, liveness detection radar in the right hand, UWB is imperative for cars!
- After a decade of rapid development, domestic CIS has entered the market
- Aegis Dagger Battery + Thor EM-i Super Hybrid, Geely New Energy has thrown out two "king bombs"
- A brief discussion on functional safety - fault, error, and failure
- In the smart car 2.0 cycle, these core industry chains are facing major opportunities!
- The United States and Japan are developing new batteries. CATL faces challenges? How should China's new energy battery industry respond?
- Murata launches high-precision 6-axis inertial sensor for automobiles
- Ford patents pre-charge alarm to help save costs and respond to emergencies
- New real-time microcontroller system from Texas Instruments enables smarter processing in automotive and industrial applications
- Altium Designer 20.0.9.164
- "Introduction to Arduino Interactive Design with Perfect Illustrations" - Getting Started with Microcontrollers from Scratch
- TI wM-Bus 169MHz RF Subsystem with Receiver for Smart Gas and Water Meters
- Delay calculation by cross-correlation method
- i.MX6ULL Embedded Linux Development 4-Root File System Construction
- 【NUCLEO-L552ZE Review】-1: Start from TrustZone
- What types of anti-wear hydraulic oil are there? What are their characteristics?
- [STM32WB55 Review] What are the differences between dual-core MCUs?
- Where can I buy a multi-channel RF front-end development board with integrated digital attenuator and phase shifter?
- Question: What is the maximum communication rate of AT32F421?