The PIC18-Q10 family of microcontrollers (MCUs) is equipped with a 10-bit Analog-to-Digital Converter with Computation (ADCC) and Hardware Capacitive Voltage Divider (CVD) technique for advanced capacitive touch sensing, which are used to demonstrate this application demo. Along with these peripherals, the PIC18-Q10 family has a rich set of analog and digital peripherals, communication modules, and Core Independent Peripherals (CIP). This application demo discusses one of the simple and very useful real-time control application, DC motor control using capacitive touch buttons and a slider.
Click the image below to view the demo operation video of DC Motor Control Using Capacitive Touch Interface.
- MPLAB® X IDE v6.20 or newer
- XC8 Compiler 2.46 or newer
- MPLAB Code Configurator (MCC) 5.5.0 or newer
- Microchip PIC18F-Q Series Device Support 1.25.433 or newer
Note: For running the demo, the installed tool versions should be the same or later. This example is not tested with the previous versions.
- DC Motor 8 click
- PIC18F47Q10 Curiosity Nano
- Curiosity Nano Base for Click boards™
- QT7 Xplained Pro Extension Kit
- PIC18F47Q10 Product Page
- QT7 Xplained Pro User Guide
- DC Motor Control with Touch Interface and IR Communication-Application Note
In this application demo, Curiosity Nano base for Click boards with PIC18F47Q10 Curiosity Nano board, QT7 Xplained Pro extension board for capacitive touch sensors, and DC motor 8 Click board to control the DC motor are used. This application demonstrates the usage of ADCC with hardware CVD technique and Pulse-Width Modulation (PWM) peripherals of the PIC18F47Q10 MCU to control the DC motor with touch interface. For more details about the CVD technique please refer to the mTouch™ Sensing Solution Acquisition Methods Capacitive Voltage Divider application note available on Microchip website. The firmware libraries for this demo example is generated with the help of MPLAB® X Code Configurator (MCC) plugin available with MPLAB X IDE. For more details about how to set up a basic mTouch project please refer to mTouch® Capacitive Sensing Library Module for Mplab® X Code Configurator User’s Guide..
To develop this application, the PIC18F47Q10 MCU is interfaced with QT7 Xplained Pro extension board and its analog pins are required to acquire the capacitive touch sensors data, which is analog in nature. This demo used ADC computation feature along with CVD technique to acquire said data. The QT7 Xplained Pro extension board has got two touch buttons and one slider. Additionally, the board has 8 LEDs that indicate the touch detection. The DC Motor 8 click board from MikroElektronika is used to drive the DC motor. This click board relies on the MIC4605, an 85V half-bridge MOSFET driver with adaptive dead-time and shoot-through protection, from Microchip. The DC Motor 8 click employs a boost converter made of MIC2206, a 2 MHz boost regulator from Microchip. The click board can drive motors with up to 40V with an output current of up to 1 amp. The PWM signal from MCU drives the motor. The EN pin which is used to enable the device is routed to the mikroBUS™ CS pin. Logic HIGH on EN pin will set the MIC4605 to work in Normal mode, while logic LOW on EN pin will put the MIC4605 into the Power Conservative Shutdown mode. This pin is pulled HIGH with the on board resistor. Figure 1 shows the basic block diagram of the implementation of the application demo.
As shown in the above figure, QT7 Xplained Pro Extension board is connected to Curiosity Nano Base for click boards. DC motor 8 Click is connected to mikroBUS slot 1 of Curiosity Nano Base board. DC Motor along with rotating wheel is connected to the DC motor 8 Click and also to the power pins of the Curiosity Nano Base board.
The following table shows the connections between QT7 Extension Pro and Curiosity Nano Base for click boards.
S No. | Xplained Pro Extension Header Pin Names | Signal Name of Pins of PIC18F47Q10 | Pin Number in QT7 Header1 | Signal Name of QT7 pins | IN/OUT Pin configuration in MCU |
---|---|---|---|---|---|
1 | AN3 | RA2 | 4 | Y-LINE-1 | IN |
2 | RST2 | RC7 | 5 | LED0 | OUT |
3 | RST3 | RD5 | 6 | LED6 | OUT |
4 | PWM2 | RA4 | 7 | Y-LINE-2 | IN |
5 | PWM3 | RA5 | 8 | Y-LINE-3 | IN |
6 | INT2 | RB4 | 9 | Y-LINE-4 | IN |
7 | CS3 | RD7 | 10 | Y-LINE-0 | IN |
8 | SDA | RB2 | 11 | LED7 | OUT |
9 | SCL | RB1 | 12 | LED1 | OUT |
10 | CS2 | RD6 | 15 | LED2 | OUT |
11 | MOSI | RC4 | 16 | LED3 | OUT |
12 | MISO | RC5 | 17 | LED4 | OUT |
13 | SCK | RC6 | 18 | LED5 | OUT |
This application demonstrates DC motor control using capacitive touch buttons and a slider. The buttons start and stop the DC motor while the slider adjusts the speed. Their configuration is explained below:
- Touch Button1 to start the motor.
- Move the finger on the Slider to increase or decrease the motor speed.
- Touch Button2 to stop the running motor.
After a system reset, all LEDs present on the QT7 Xplained Pro board are in OFF state and DC motor is turned OFF.
DC motor is in the Reset state
Press Button1 to start the motor and make it run at a pre-defined minimum speed. The LED associated with the Button1 turns ON to indicate the Button1 press event. Also, the slider's lowest position LED is turned ON to indicate the start position of the motor
DC motor starts running at a pre-defined speed
Moving the finger from left to right on the slider gradually increases the speed of the motor, which is also indicated by the LEDs turning on.
DC motor is running at a moderate speed
Once the finger reaches the extreme right position on the slider, the motor runs at the highest speed and all the indication LEDs will be turned ON.
DC motor is running at the highest speed
Moving the finger from right to left on the slider gradually decreases the speed of the motor, which is also indicated by the LEDs turning off. Once the finger reaches the extreme left position on the slider, the speed of the motor becomes zero and it will stop.
DC motor is running at the lowest speed
Press Button2 to stall the motor. The indication LED of Button2 will turn ON to indicate the button press event.
This section explains how to configure the peripherals using MPLAB X IDE with MCC plug-in to recreate the project.
Refer to the Software Used section to install required tools.
Additional Links: MCC Melody Technical Reference
Module | Configuration | Usage |
---|---|---|
Clock control | Clock Source - HFINTOSC HF Internal Clock - 32 MHz Clock Divider - 1 |
System Clock |
ADCC | Hardware Settings Enable ADCC Operating mode - Basic mode Result Alignment - right Interrupt Settings Enable ADCC Threshold Interrupt |
Process output of Touch |
PWM | Software Settings Timer Dependency Selector - Timer2 Hardware Settings PWM Enable - Enable Select a Timer - TMR2 |
To vary DC motor speed |
Timer2 | Hardware Settings Enable Timer Control Mode - Roll over pulse Timer clock Clock Source - Fosc/4 Prescaler - 1:1 Postscaler - 1:1 Timer Period Timer Period - 25 us |
To control PWM module |
Pins | Pins - Custom Name RC7 - SLED1 RB1 - SLED2 RD6 - SLED3 RC4 - SLED4 RC5 - SLED5 RC6 - SLED1 RD5 - BLED1 RB7 - BLED2 RD4 - EN Pin Grid View PWM PWM4OUT - RA3 Touch RA2 (Y-LINE-1) RA4 (Y-LINE-2) RA5 (Y-LINE-3) RB4 (Y-LINE-4) RD7 (Y-LINE-0) Pins Output: RB1 (SLED2) RB2 (BLED2) RC4 (SLED4) RC5 (SLED5) RC6 (SLED6) RC7 (SLED7) RD4 (EN) RD5 (BLED1) RD6 (SLED3) |
Pin Configuration |
To add the Touch library to the project, open Content Manager in MCC, select Touch under Libraries and click on Apply. Now, Touch will be added to the device resources. Click Touch Configurator in the device resources and click the add symbol to add the Touch library to your project. Now, let's configure the Touch library.
The table below shows the Touch library configuration in MCC.
Module | Configuration | Usage |
---|---|---|
Touch | Create Button - 4 Slider - 3 (click Add after selecting these) Configure Sensor pins: Button 0 - ANA2 (RA2) Button 1 - AND7 (RD7) Slider 0 - ANB4 (RB4) Slider 0 - ANA5 (RA5) Slider 0 - ANA4 (RA4) Sensor parameters: Slider 0 Threshold - 50 Common Parameters: Sensor Scan Rate Configuration in (ms) - Free Running Buttons Interface Method - Callback function notifies application |
To configure touch and generate API's for its Application |
This application demo shows the usage of a few important peripherals of the PIC18-Q10 family of MCUs such as ADCC with CVD, PWM, and Timer for simple, real-time control applications. The combination of PWM and other core independent peripherals along with advanced analog peripherals offers a lower system cost, low-power, reliable and predictable application development.