An Arduino sketch for controlling a vnh5019 motor shield for a roll-on/off roof. The sketch includes a serial interface using NMEA commands.
The roof consists a roof that moves back and forth on a set of rails and a lock functionality using a linear actuator.
The sketch supports a 1-wire temperature sensor connected
The configurable parameters can be modified in Settings.h.
BOARD_NAME - Identifier for the board, returned as a response to the TEST command.
PIN_ONE_WIRE_BUS - Pin number for the temperature sensor bus
PIN_BUTTON_EMERGENCYSTOP - Pin number for the emergency stop button. This must be an interrupt-capable pin.
PIN_BUTTON_OPEN - Pin number for the 'Open' button
PIN_BUTTON_CLOSE - Pin number for the 'Close' button
PIN_LIMITSWITCH_OPEN - Pin number for the 'Open' limit switch
PIN_LIMITSWITCH_CLOSE - Pin number for the 'Close' limit switch
PIN_ENCODER_GATE_1 - Pin number for the first encoder gate
PIN_ENCODER_GATE_2 - Pin number for the second encoder gate
PIN_BATTERY_VOLTAGE A2 - Pin number for connecting a 1-wire temperature sensor
MOTOR_CURRENT_LIMIT_MILLIAMPS 2500 - Current limit that will trigger an error condition
MOTOR_POLARITY - Change 1 to -1 to invert the motor movement direction.
FULL_SPEED - Maximum motor speed from 0 to 400
CLOSING_SPEED - Motor speed to use for final tightening of the roof
RAMP_LENGTH - The duration during which the motor ramps up to FULL_SPEED. In motor ticks (1/10th second).
ENCODER_MAX_POSITION - Encoder position where the roof will be stopped when opening
ENCODER_MIN_POSITION - Encoder position where the roof will slow down when closing
MAX_MOVE_DURATION - Maximum duration (milliseconds) for any movement until error is triggered
RAMP_DELTA - Amount to change the motor speed per tick
Queries the board name and version number. This message is also sent automatically when the serial port is opened.
Example: $TEST*16
Response: $KOMAROOF,VER=1.0*63
Queries the current status of the roof.
Example: $STATUS*14
Response: $STATUS,ROOF=OPEN,PHASE=,TEMP1=11.22*74 and $POWER,12818,12920,13056,13158,13260,13396,13532,13634,13770,13906*58
ROOF - Status of the roof. The valid states are OPEN, CLOSED, STOPPED, OPENING, CLOSING, STOPPING and ERROR.
PHASE - State of the motor control loop. Valid states are IDLE, RAMP_UP, MOVE_UNTIL_NEAR, RAMP_DOWN and CLOSE_TIGHTLY.
TEMP1 - Latest temperature measurement.
The POWER response contains the latest power draw data from the last 10 ticks (1/10th second).
Unlocks the lock and opens the roof.
Example: $OPEN*14
Response: $OPEN,OK*3C
Closes the roof and locks the lock.
Example: $CLOSE*56
Response: $CLOSE,OK*7E
Stops the roof if it is moving.
Example: $STOP*18
Response: $STOP,OK*30