mirror of
https://gitlab.dit.htwk-leipzig.de/phillip.kuehne/dezibot.git
synced 2025-05-19 11:01:46 +02:00
Integrate Motors into Power Management
This commit is contained in:
parent
dfa778024b
commit
a26acf4a92
@ -17,7 +17,7 @@
|
|||||||
#include <freertos/task.h>
|
#include <freertos/task.h>
|
||||||
#include "driver/ledc.h"
|
#include "driver/ledc.h"
|
||||||
#include "motionDetection/MotionDetection.h"
|
#include "motionDetection/MotionDetection.h"
|
||||||
#include "power/Power.h"
|
#include "../power/Power.h"
|
||||||
#define LEDC_MODE LEDC_LOW_SPEED_MODE
|
#define LEDC_MODE LEDC_LOW_SPEED_MODE
|
||||||
#define TIMER LEDC_TIMER_2
|
#define TIMER LEDC_TIMER_2
|
||||||
#define CHANNEL_LEFT LEDC_CHANNEL_3
|
#define CHANNEL_LEFT LEDC_CHANNEL_3
|
||||||
@ -25,6 +25,9 @@
|
|||||||
#define DUTY_RES LEDC_TIMER_13_BIT // Set duty resolution to 13 bits
|
#define DUTY_RES LEDC_TIMER_13_BIT // Set duty resolution to 13 bits
|
||||||
#define FREQUENCY (5000) // Frequency in Hertz. Set frequency at 5 kHz
|
#define FREQUENCY (5000) // Frequency in Hertz. Set frequency at 5 kHz
|
||||||
#define DEFAULT_BASE_VALUE 3900
|
#define DEFAULT_BASE_VALUE 3900
|
||||||
|
|
||||||
|
#define MOTOR_MAX_EXECUTION_DELAY_MS 100
|
||||||
|
|
||||||
class Motor{
|
class Motor{
|
||||||
public:
|
public:
|
||||||
Motor(uint8_t pin, ledc_timer_t timer, ledc_channel_t channel);
|
Motor(uint8_t pin, ledc_timer_t timer, ledc_channel_t channel);
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#include "Motion.h"
|
#include "Motion.h"
|
||||||
#include "power/Power.h"
|
#include "power/Power.h"
|
||||||
|
|
||||||
|
#define MOTOR_LEFT_PIN 12
|
||||||
|
#define MOTOR_RIGHT_PIN 11
|
||||||
|
|
||||||
Motor::Motor(uint8_t pin, ledc_timer_t timer, ledc_channel_t channel){
|
Motor::Motor(uint8_t pin, ledc_timer_t timer, ledc_channel_t channel){
|
||||||
this->pin = pin;
|
this->pin = pin;
|
||||||
this->channel = channel;
|
this->channel = channel;
|
||||||
@ -24,6 +27,13 @@ void Motor::begin(void){
|
|||||||
};
|
};
|
||||||
|
|
||||||
void Motor::setSpeed(uint16_t duty){
|
void Motor::setSpeed(uint16_t duty){
|
||||||
|
const float dutyFactor = duty / static_cast<float>(1 << DUTY_RES);
|
||||||
|
const float current = PowerParameters::CurrentConsumptions::CURRENT_MOTOR_T_ON * dutyFactor;
|
||||||
|
if (this->pin == MOTOR_LEFT_PIN){
|
||||||
|
Power::waitForCurrentAllowance(PowerParameters::PowerConsumers::MOTOR_LEFT, current, MOTOR_MAX_EXECUTION_DELAY_MS, NULL);
|
||||||
|
} else {
|
||||||
|
Power::waitForCurrentAllowance(PowerParameters::PowerConsumers::MOTOR_RIGHT, current, MOTOR_MAX_EXECUTION_DELAY_MS, NULL);
|
||||||
|
}
|
||||||
int difference = duty-this->getSpeed();
|
int difference = duty-this->getSpeed();
|
||||||
if (difference > 0){
|
if (difference > 0){
|
||||||
for(int i = 0;i<difference;i+=difference/20){
|
for(int i = 0;i<difference;i+=difference/20){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user