Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #173 from cfr34k/bat_checker

Battery warning module
  • Loading branch information...
commit f983d7abd93d3cc3da274ff99100355af2a40e12 2 parents aa88480 + 12613b3
@flixr flixr authored
View
21 conf/modules/bat_checker.xml
@@ -0,0 +1,21 @@
+<!DOCTYPE module SYSTEM "module.dtd">
+
+<!--
+ Battery checker module
+ @define BAT_CHECKER_DELAY Number of seconds the battery voltage has to be
+ below LOW_BAT_LEVEL before the warning signal is
+ activated.
+ @define BAT_CHECKER_LED The LED to use for the warning signal.
+ -->
+<module name="bat_checker">
+ <header>
+ <file name="bat_checker.h"/>
+ </header>
+ <init fun="init_bat_checker()"/>
+ <periodic fun="bat_checker_periodic()" freq="2" autorun="TRUE"/>
+ <makefile>
+ <define name="bat_checker_periodic_FREQ" value="2"/>
+ <file name="bat_checker.c"/>
+ </makefile>
+</module>
+
View
12 sw/airborne/boards/lisa_m_1.0.h
@@ -24,6 +24,18 @@
#define LED_3_GPIO_PIN GPIO_Pin_2
#define LED_3_AFIO_REMAP ((void)0)
+// GPIO pins
+#define LED_4_BANK
+#define LED_4_GPIO GPIOC
+#define LED_4_GPIO_CLK RCC_APB2Periph_GPIOC
+#define LED_4_GPIO_PIN GPIO_Pin_12
+#define LED_4_AFIO_REMAP ((void)0)
+
+#define LED_5_BANK
+#define LED_5_GPIO GPIOC
+#define LED_5_GPIO_CLK RCC_APB2Periph_GPIOC
+#define LED_5_GPIO_PIN GPIO_Pin_10
+#define LED_5_AFIO_REMAP ((void)0)
/* configuration for aspirin - and more generaly IMUs */
#define IMU_ACC_DRDY_RCC_GPIO RCC_APB2Periph_GPIOB
View
79 sw/airborne/modules/bat_checker/bat_checker.c
@@ -0,0 +1,79 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Thomas Kolb
+ *
+ * This file is part of paparazzi.
+ *
+ * paparazzi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * paparazzi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with paparazzi; see the file COPYING. If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "bat_checker.h"
+#include "generated/airframe.h"
+#include "subsystems/electrical.h"
+#include "led.h"
+
+#ifndef CRITIC_BAT_LEVEL
+#error You must define CRITIC_BAT_LEVEL to use this module!
+#endif
+
+#ifndef LOW_BAT_LEVEL
+#error You must define LOW_BAT_LEVEL to use this module!
+#endif
+
+#ifndef BAT_CHECKER_LED
+#error You must define BAT_CHECKER_LED in your airframe file.
+#endif
+
+#ifndef BAT_CHECKER_DELAY
+#warning BAT_CHECKER_DELAY is undefined. Falling back to 5 seconds.
+#define BAT_CHECKER_DELAY 5
+#endif
+
+// at this level, the buzzer will be activated periodically
+#define WARN_BAT_LEVEL1 (LOW_BAT_LEVEL*10)
+
+// at this level, the buzzer will be activated permanently
+#define WARN_BAT_LEVEL2 (CRITIC_BAT_LEVEL*10)
+
+#pragma message "Battery checker included!"
+
+void init_bat_checker(void) {
+ LED_INIT(BAT_CHECKER_LED);
+ LED_OFF(BAT_CHECKER_LED);
+}
+
+void bat_checker_periodic(void) {
+ static uint8_t bat_low_counter = 0;
+ if(electrical.vsupply < WARN_BAT_LEVEL1) {
+ if(bat_low_counter)
+ bat_low_counter--;
+ } else {
+ bat_low_counter = BAT_CHECKER_DELAY * bat_checker_periodic_FREQ;
+ }
+
+ if(!bat_low_counter) {
+ if(electrical.vsupply < WARN_BAT_LEVEL2) {
+ LED_ON(BAT_CHECKER_LED);
+ } else if(electrical.vsupply < WARN_BAT_LEVEL1) {
+ LED_TOGGLE(BAT_CHECKER_LED);
+ }
+ } else {
+ LED_OFF(BAT_CHECKER_LED);
+ }
+}
+
View
31 sw/airborne/modules/bat_checker/bat_checker.h
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2012 Thomas Kolb
+ *
+ * This file is part of paparazzi.
+ *
+ * paparazzi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * paparazzi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with paparazzi; see the file COPYING. If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef BAT_CHECKER_H
+#define BAT_CHECKER_H
+
+void init_bat_checker(void);
+void bat_checker_periodic(void);
+
+#endif // BAT_CHECKER_H
Please sign in to comment.
Something went wrong with that request. Please try again.