element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Connected Cloud Challenge
  • Challenges & Projects
  • Design Challenges
  • Connected Cloud Challenge
  • More
  • Cancel
Connected Cloud Challenge
Blog #11 Water sensor calibration
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: wanfp97
  • Date Created: 25 May 2020 8:16 AM Date Created
  • Views 1289 views
  • Likes 3 likes
  • Comments 0 comments
  • psoc 6
Related
Recommended

#11 Water sensor calibration

wanfp97
wanfp97
25 May 2020

Few days ago, I have got some of the component that I have ordered online. With that, I'm going to make some improvements on my water dispenser that I have designed in my previous blogpost #8 Controlling water pump using PSoC6 .

 

I have replaced the 12 NPN transistor that I used in my previous blogpost with a N-channel MOSFET and also added a water sensor to the water dispenser to detect the water level.

 

BOM: PSoC6 WiFi-BT Prototyping Kit, a water pump, two 18650 battery, 18650 battery socket, 2 N-channel MOSFET, a push button, a buzzer, a red led, a green LED, 6x 10k ohm potentiometers, some jumper wires, a bread board, a water pump and hose, a 1.5L water bottle, a 500ml water bottle, bendable steel wire, a plastic tray, hot glue gun and glue sticks.

 

GitHub: https://github.com/wanfp97/PSoC6-water-sensor-calibration

https://github.com/wanfp97/PSoC6-water-sensor-calibration

Schematic Diagram:

image

Device Configurator setting:

image

red               : strong drive input buffer off, Initial Drive State Low    

buzzer         : strong drive input buffer off, Initial Drive State Low

wtr_sense   : strong drive input buffer on, Initial Drive State High

button         : strong drive input buffer on, Initial Drive State Low

water_pump: strong drive input buffer off, Initial Drive State Low

green          : strong drive input buffer off, Initial Drive State Low    

 

Coding:

#include "cy_pdl.h" // include Peripheral Driver Library
#include "cyhal.h" // include Hardware Abstraction Layer library
#include "cycfg.h" // include device configurator library
/*******************************************************************************
* Function Prototypes
********************************************************************************/
static void button_intr_handler(void *handler_arg, cyhal_gpio_event_t event);
/*******************************************************************************
* Global Variables
********************************************************************************/
volatile bool button_intr_flag = false; // Boolean type variable to store the interrupt flag
int main(void)
{
    init_cycfg_all(); // configure pins as done in Device Configurator
    __enable_irq(); // enable interrupt
    cyhal_gpio_register_callback(button_HAL_PORT_PIN,
                                 button_intr_handler, NULL); // assigning isr handler for button
    cyhal_gpio_enable_event(button_HAL_PORT_PIN, CYHAL_GPIO_IRQ_RISE,
                                 1u, true); // interrupt on rising edge (button pressed)
    for (;;)
    {
     if (true == button_intr_flag) // if interrupt happens (button pressed)
     {
         button_intr_flag = false; // clear interrupt flag for further interrupt
         if(Cy_GPIO_ReadOut(water_pump_PORT, water_pump_NUM)==0UL)
         {
          Cy_GPIO_Write(green_PORT, green_NUM, 1UL); // green LED on
          Cy_GPIO_Write(water_pump_PORT, water_pump_NUM, 1UL); // on water pump
         }
         else
         {
          Cy_GPIO_Write(green_PORT, green_NUM, 0UL); // green LED off
          Cy_GPIO_Write(water_pump_PORT, water_pump_NUM, 0UL); // off water pump
         }
     }
     else;
     if(0UL == Cy_GPIO_Read(wtr_sense_PORT, wtr_sense_NUM))
  {
         Cy_GPIO_Write(red_PORT, red_NUM, 1UL); // red LED on
         Cy_GPIO_Write(buzzer_PORT, buzzer_NUM, 1UL); // buzzer on
  }
     else
     {
         Cy_GPIO_Write(red_PORT, red_NUM, 0UL); // red LED off
         Cy_GPIO_Write(buzzer_PORT, buzzer_NUM, 0UL); // buzzer off
     }
    }
}
/*******************************************************************************
* Function Name: button_intr_handler
********************************************************************************
* Summary:
*   GPIO interrupt handler.
*
* Parameters:
*  void *handler_arg (unused)
*  cyhal_gpio_irq_event_t (unused)
*
*******************************************************************************/
static void button_intr_handler(void *handler_arg, cyhal_gpio_irq_event_t event)
{
    button_intr_flag = true;
}

 

Explanation of the circuit:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Water sensor calibration:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

The high output for the red led and the buzzer can later on be modify to use to send the stopping signal to the water dispenser to stop it when the water level is high to prevent overflow.

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube