Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bcb9934778 |
2
.gitignore
vendored
@ -1,5 +1,3 @@
|
||||
/latex
|
||||
/build
|
||||
/pdf
|
||||
.obsidian
|
||||
.trash
|
||||
|
||||
@ -1,69 +0,0 @@
|
||||
local pagebreak = {
|
||||
asciidoc = '<<<\n\n',
|
||||
context = '\\page',
|
||||
epub = '<p style="page-break-after: always;"> </p>',
|
||||
html = '<div style="page-break-after: always;"></div>',
|
||||
latex = '\\newpage{}',
|
||||
ms = '.bp',
|
||||
ooxml = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>',
|
||||
odt = '<text:p text:style-name="Pagebreak"/>'
|
||||
}
|
||||
local title = '';
|
||||
local title_inHaders = true;
|
||||
|
||||
local stringify_orig = (require 'pandoc.utils').stringify
|
||||
|
||||
local function stringify(x)
|
||||
return type(x) == 'string' and x or stringify_orig(x)
|
||||
end
|
||||
|
||||
local function newpage(format)
|
||||
if format:match 'asciidoc' then
|
||||
return pandoc.RawBlock('asciidoc', pagebreak.asciidoc)
|
||||
elseif format == 'context' then
|
||||
return pandoc.RawBlock('context', pagebreak.context)
|
||||
elseif format == 'docx' then
|
||||
return pandoc.RawBlock('openxml', pagebreak.ooxml)
|
||||
elseif format:match 'epub' then
|
||||
return pandoc.RawBlock('html', pagebreak.epub)
|
||||
elseif format:match 'html.*' then
|
||||
return pandoc.RawBlock('html', pagebreak.html)
|
||||
elseif format:match 'latex' then
|
||||
return pandoc.RawBlock('tex', pagebreak.latex)
|
||||
elseif format:match 'ms' then
|
||||
return pandoc.RawBlock('ms', pagebreak.ms)
|
||||
elseif format:match 'odt' then
|
||||
return pandoc.RawBlock('opendocument', pagebreak.odt)
|
||||
else
|
||||
-- fall back to insert a form feed character
|
||||
return pandoc.Para{pandoc.Str '\f'}
|
||||
end
|
||||
end
|
||||
|
||||
function Meta(meta)
|
||||
title = (meta.title and stringify(meta.title)) or title
|
||||
if title ~= '' then
|
||||
title_inHaders = false;
|
||||
end
|
||||
end
|
||||
|
||||
function Header(el)
|
||||
if title_inHaders then
|
||||
if el.level == 1 then
|
||||
title = el.content
|
||||
return {}
|
||||
else
|
||||
el.level = el.level - 1;
|
||||
end
|
||||
end
|
||||
|
||||
if el.level == 1 or el.level == 2 then
|
||||
return { newpage(FORMAT), el }
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
{Meta = Meta},
|
||||
{Header = Header},
|
||||
{Meta = function (meta) meta.title = title; return meta end}
|
||||
}
|
||||
@ -1,14 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
MD_FILE="$1"
|
||||
|
||||
set -e
|
||||
|
||||
BASE_DIR="$(pwd)"
|
||||
PDF_FILE="${BASE_DIR}/pdf/$(basename "$MD_FILE" | sed -e 's/\.md$/.pdf/')"
|
||||
TEX_FILE="${BASE_DIR}/latex/$(basename "$MD_FILE" | sed -e 's/\.md$/.latex/')"
|
||||
BUILD_DIR="${BASE_DIR}/build/$(basename "$MD_FILE" | sed -e 's/\.md$//')"
|
||||
TEMP_MD_FILE="$BUILD_DIR/$(basename "$MD_FILE")"
|
||||
|
||||
TEMP_TEX_FILE="$BUILD_DIR/$(basename "$MD_FILE" | sed -e 's|md$|latex|')"
|
||||
mkdir -p "$(dirname "$TEMP_MD_FILE")"
|
||||
|
||||
cp "$MD_FILE" "$TEMP_MD_FILE"
|
||||
@ -18,58 +14,60 @@ function download_images() {
|
||||
for line in $(grep '!\[.*\](https://.*\.png)' "$1" | sed -e 's/ /%20;/g')
|
||||
do
|
||||
src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
|
||||
echo "download remote image: $src"
|
||||
echo "remote image found: $src"
|
||||
|
||||
mkdir -p "${BASE_DIR}/pdf/images"
|
||||
mkdir -p "${BASE_DIR}/latex/images"
|
||||
name=$(echo "$src" | sed -e 's|^.*/\([^/]*\)$|\1|')
|
||||
if [[ ! -f "${BASE_DIR}/pdf/images/$name" ]]
|
||||
then
|
||||
curl "$src" >"${BASE_DIR}/pdf/images/$name"
|
||||
else
|
||||
echo " image already exists"
|
||||
fi
|
||||
sed -i "$1" -e "s|$src|${BASE_DIR}/pdf/images/$name|"
|
||||
curl "$src" > "${BASE_DIR}/latex/images/$name"
|
||||
done
|
||||
echo "download done"
|
||||
}
|
||||
|
||||
for line in $(grep '^!\[.*\](.*\.md)$' "$TEMP_MD_FILE" | sed -e 's/ /%20;/g')
|
||||
do
|
||||
md_src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
|
||||
echo "include found: $md_src"
|
||||
src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
|
||||
echo "include found: markdown/$src"
|
||||
|
||||
cp "$(pwd)/markdown/$md_src" "$BUILD_DIR/$(basename "$md_src")"
|
||||
|
||||
download_images "$BUILD_DIR/$(basename "$md_src")"
|
||||
|
||||
sed -i "$BUILD_DIR/$(basename "$md_src")" \
|
||||
cp "markdown/$src" "$BUILD_DIR/$src"
|
||||
sed -i "$BUILD_DIR/$src" \
|
||||
-e 's|\[toc\]||' \
|
||||
-e 's|^\[parent\].*$||' \
|
||||
-e 's|^> \[!todo\]|> \\textcolor{cyan}{TODO:}|' \
|
||||
-e 's|^> \[!warn\]|> \\textcolor{orange}{WARNING:}|' \
|
||||
-e "s|\`\`\`mermaid|\`\`\`{.mermaid loc=${BASE_DIR}/pdf/images/$(basename "$md_src")}|"
|
||||
-e 's|^# |\\newpage\n# |' \
|
||||
-e 's|^## |\\newpage\n## |' \
|
||||
-e 's|\[\([^]]*\)\](#\([^)]*\))|[\1](#\L\2)|' \
|
||||
-e 's|https://live.kladjes.nl/uploads|../../latex/images|'
|
||||
download_images "$BUILD_DIR/$src"
|
||||
|
||||
sed -i "$TEMP_MD_FILE" \
|
||||
-e "s|^\!\[.*\]($md_src)\$|\`\`\`\\{.include shift-heading-level-by=1\\}\n$(basename "$md_src")\n\`\`\`|"
|
||||
-e "s/^\!\[.*\]($src)\$/\`\`\`\\{.include shift-heading-level-by=1\\}\n${src}\n\`\`\`/"
|
||||
|
||||
done
|
||||
|
||||
download_images "$TEMP_MD_FILE"
|
||||
|
||||
sed -i "$TEMP_MD_FILE" \
|
||||
-e 's|^> \[!todo\]|> \\textcolor{cyan}{TODO:}|' \
|
||||
-e 's|^> \[!warn\]|> \\textcolor{orange}{WARNING:}|' \
|
||||
-e "s|\`\`\`mermaid|\`\`\`{.mermaid loc=${BASE_DIR}/pdf/images/$(basename "$MD_FILE")}|"
|
||||
title="$(grep '^# ' "$MD_FILE" | head -n 1 | sed 's|^# ||')"
|
||||
|
||||
sed -i "$TEMP_MD_FILE" \
|
||||
-e 's|\[toc\]|\\tableofcontents|' \
|
||||
-e 's|^\[parent\].*$||' \
|
||||
-e 's|^# .*$||' \
|
||||
-e 's|^#||' \
|
||||
-e 's|^# |\\newpage\n# |' \
|
||||
-e 's|\[\([^]]*\)\](#\([^)]*\))|[\1](#\L\2)|' \
|
||||
-e 's|https://live.kladjes.nl/uploads|../../latex/images|'
|
||||
|
||||
mkdir -p ${BASE_DIR}/pdf/images/$(basename "$MD_FILE")
|
||||
cd "$BUILD_DIR"
|
||||
pandoc --standalone \
|
||||
--lua-filter=../../converters/include-files.lua \
|
||||
--lua-filter=../../converters/headers.lua \
|
||||
-t latex --pdf-engine=xelatex \
|
||||
--from=markdown+abbreviations \
|
||||
--template "${BASE_DIR}/converters/template.latex" \
|
||||
-F "${XDG_DATA_HOME}/npm/bin/mermaid-filter" \
|
||||
-o "$PDF_FILE" \
|
||||
"$(basename "$TEMP_MD_FILE")"
|
||||
pandoc --lua-filter=../../converters/include-files.lua --to=latex --from=markdown+abbreviations --template "${BASE_DIR}/converters/template.latex" -o "$TEX_FILE" "$(basename "$TEMP_MD_FILE")"
|
||||
cd "$BASE_DIR"
|
||||
|
||||
# for line in $(grep '^!\[.*\](.*\.md)$' "$TEMP_MD_FILE" | sed 's/ /%20;/g')
|
||||
# do
|
||||
# src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
|
||||
|
||||
# sed -i "$TEMP_MD_FILE" \
|
||||
# -e "s/^!\[.*\]($src)\$/\\include{$src}/"
|
||||
# done
|
||||
|
||||
sed --in-place \
|
||||
-e "s|?title?|$title|" \
|
||||
"$TEX_FILE"
|
||||
|
||||
@ -1,109 +0,0 @@
|
||||
--[[
|
||||
pagebreak – convert raw LaTeX page breaks to other formats
|
||||
|
||||
Copyright © 2017-2021 Benct Philip Jonsson, Albert Krewinkel
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
]]
|
||||
local stringify_orig = (require 'pandoc.utils').stringify
|
||||
|
||||
local function stringify(x)
|
||||
return type(x) == 'string' and x or stringify_orig(x)
|
||||
end
|
||||
|
||||
--- configs – these are populated in the Meta filter.
|
||||
local pagebreak = {
|
||||
asciidoc = '<<<\n\n',
|
||||
context = '\\page',
|
||||
epub = '<p style="page-break-after: always;"> </p>',
|
||||
html = '<div style="page-break-after: always;"></div>',
|
||||
latex = '\\newpage{}',
|
||||
ms = '.bp',
|
||||
ooxml = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>',
|
||||
odt = '<text:p text:style-name="Pagebreak"/>'
|
||||
}
|
||||
|
||||
local function pagebreaks_from_config (meta)
|
||||
local html_class =
|
||||
(meta.newpage_html_class and stringify(meta.newpage_html_class))
|
||||
or os.getenv 'PANDOC_NEWPAGE_HTML_CLASS'
|
||||
if html_class and html_class ~= '' then
|
||||
pagebreak.html = string.format('<div class="%s"></div>', html_class)
|
||||
end
|
||||
|
||||
local odt_style =
|
||||
(meta.newpage_odt_style and stringify(meta.newpage_odt_style))
|
||||
or os.getenv 'PANDOC_NEWPAGE_ODT_STYLE'
|
||||
if odt_style and odt_style ~= '' then
|
||||
pagebreak.odt = string.format('<text:p text:style-name="%s"/>', odt_style)
|
||||
end
|
||||
end
|
||||
|
||||
--- Return a block element causing a page break in the given format.
|
||||
local function newpage(format)
|
||||
if format:match 'asciidoc' then
|
||||
return pandoc.RawBlock('asciidoc', pagebreak.asciidoc)
|
||||
elseif format == 'context' then
|
||||
return pandoc.RawBlock('context', pagebreak.context)
|
||||
elseif format == 'docx' then
|
||||
return pandoc.RawBlock('openxml', pagebreak.ooxml)
|
||||
elseif format:match 'epub' then
|
||||
return pandoc.RawBlock('html', pagebreak.epub)
|
||||
elseif format:match 'html.*' then
|
||||
return pandoc.RawBlock('html', pagebreak.html)
|
||||
elseif format:match 'latex' then
|
||||
return pandoc.RawBlock('tex', pagebreak.latex)
|
||||
elseif format:match 'ms' then
|
||||
return pandoc.RawBlock('ms', pagebreak.ms)
|
||||
elseif format:match 'odt' then
|
||||
return pandoc.RawBlock('opendocument', pagebreak.odt)
|
||||
else
|
||||
-- fall back to insert a form feed character
|
||||
return pandoc.Para{pandoc.Str '\f'}
|
||||
end
|
||||
end
|
||||
|
||||
local function is_newpage_command(command)
|
||||
return command:match '^\\newpage%{?%}?$'
|
||||
or command:match '^\\pagebreak%{?%}?$'
|
||||
end
|
||||
|
||||
-- Filter function called on each RawBlock element.
|
||||
function RawBlock (el)
|
||||
-- Don't do anything if the output is TeX
|
||||
if FORMAT:match 'tex$' then
|
||||
return nil
|
||||
end
|
||||
-- check that the block is TeX or LaTeX and contains only
|
||||
-- \newpage or \pagebreak.
|
||||
if el.format:match 'tex' and is_newpage_command(el.text) then
|
||||
-- use format-specific pagebreak marker. FORMAT is set by pandoc to
|
||||
-- the targeted output format.
|
||||
return newpage(FORMAT)
|
||||
end
|
||||
-- otherwise, leave the block unchanged
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Turning paragraphs which contain nothing but a form feed
|
||||
-- characters into line breaks.
|
||||
function Para (el)
|
||||
if #el.content == 1 and el.content[1].text == '\f' then
|
||||
return newpage(FORMAT)
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
{Meta = pagebreaks_from_config},
|
||||
{RawBlock = RawBlock, Para = Para}
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, portrait, includehead, includefoot, margin=1.5cm]{geometry}
|
||||
|
||||
\usepackage[$if(lang)$$lang$$else$dutch$endif$]{babel}
|
||||
\usepackage[dutch]{babel}
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
@ -38,11 +38,6 @@
|
||||
|
||||
% for images
|
||||
\usepackage{graphbox}
|
||||
\usepackage{sectsty}
|
||||
\sectionfont{\clearpage}
|
||||
\newcommand\pandocbounded{}
|
||||
|
||||
\setkeys{Gin}{width=.99\linewidth}
|
||||
|
||||
% add bookmarks with \hypertarget
|
||||
\usepackage{bookmark}
|
||||
@ -65,78 +60,80 @@
|
||||
\let\tmpenditem\enditemize
|
||||
\renewenvironment{itemize}{\tmpitem\setlength\itemsep{-.4em}}{\tmpenditem}
|
||||
|
||||
$if(highlighting-macros)$
|
||||
$highlighting-macros$
|
||||
$endif$
|
||||
|
||||
\begin{document}
|
||||
\raggedright
|
||||
\pagecolor{darkishyellow}
|
||||
|
||||
\begin{titlepage}
|
||||
.
|
||||
\vskip 10em
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu $title$ \par}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu $sub_title$ \par}
|
||||
\end{center}
|
||||
\null\vfill
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu ?title? \par}
|
||||
\vskip 3em
|
||||
% \includegraphics{assets/eriks.50.png}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu Superlight Personal Carrier \par}
|
||||
\end{center}
|
||||
\vskip 25em
|
||||
{
|
||||
\large
|
||||
\lineskip .75em
|
||||
\begin{tabular}{r l}
|
||||
$if(lang)$Auther$else$Gemaakt door$endif$: $for(auther)$& $auther.name$ <$auther.email$> \\
|
||||
$endfor$\\
|
||||
$if(class_code)$
|
||||
$if(lang)$Class code$else$Vak code$endif$: & $class_code$ \\\\
|
||||
$endif$
|
||||
$if(lang)$Exported on$else$Ge\"exporteerd op$endif$: & \today
|
||||
gemaakt door: & Finley van Reenen (0964590@hr.nl) \\
|
||||
& Chris Tan (0992143@hr.nl) \\
|
||||
& Tijn Snijders (1001829@hr.nl) \\
|
||||
& Max Kappert (1030682@hr.nl) \\
|
||||
& Thomas Braam (0989527@hr.nl) \\\\
|
||||
vak code: & ELEPEE51 \\\\
|
||||
ge\"exporteerd op: & \today
|
||||
\end{tabular}
|
||||
}
|
||||
\vfill\null
|
||||
\end{titlepage}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{} % clear all header fields
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu $title$}
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu $sub_title$}
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu ?title?}
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu Superlight Personal Carrier}
|
||||
\fancyfoot{} % clear all footer fields
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu $for(auther)$$auther.name_short$${sep}, $endfor$}
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu E.L.F. van Reenen, C. Tan, T Snijders, M. Kappert en T. Braam}
|
||||
\fancyfoot[CO]{\color{gray}\fontUbuntu }
|
||||
\fancyfoot[RO]{\color{gray}\fontUbuntu \thepage}
|
||||
|
||||
$if(toc)$
|
||||
\tableofcontents
|
||||
$endif$
|
||||
|
||||
$if(lof)$
|
||||
\listoffigures
|
||||
$endif$
|
||||
$if(lot)$
|
||||
\listoftables
|
||||
$endif$
|
||||
$if(linestretch)$
|
||||
\setstretch{$linestretch$}
|
||||
$endif$
|
||||
|
||||
|
||||
$body$
|
||||
|
||||
|
||||
% $if(nocite-ids)$
|
||||
% \nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
|
||||
% $endif$
|
||||
% $if(natbib)$
|
||||
% $if(bibliography)$
|
||||
% $if(biblio-title)$
|
||||
% $if(has-chapters)$
|
||||
% \renewcommand\bibname{$biblio-title$}
|
||||
% $else$
|
||||
% \renewcommand\refname{$biblio-title$}
|
||||
% $endif$
|
||||
% $endif$
|
||||
% \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||
$if(nocite-ids)$
|
||||
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
$if(bibliography)$
|
||||
$if(biblio-title)$
|
||||
$if(has-chapters)$
|
||||
\renewcommand\bibname{$biblio-title$}
|
||||
$else$
|
||||
\renewcommand\refname{$biblio-title$}
|
||||
$endif$
|
||||
$endif$
|
||||
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||
|
||||
% $endif$
|
||||
% $endif$
|
||||
% $if(biblatex)$
|
||||
% \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||
$endif$
|
||||
$endif$
|
||||
$if(biblatex)$
|
||||
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||
|
||||
$endif$
|
||||
|
||||
% $endif$
|
||||
|
||||
\end{document}
|
||||
801
latex/detailontwerp_stabilisatie.latex
Normal file
@ -0,0 +1,801 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, portrait, includehead, includefoot, margin=1.5cm]{geometry}
|
||||
|
||||
\usepackage[dutch]{babel}
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
\usepackage{xcolor}
|
||||
\usepackage{makecell}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{adjustbox}
|
||||
|
||||
\usepackage{framed}
|
||||
|
||||
\usepackage{longtable}
|
||||
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{xunicode}
|
||||
\usepackage{xltxtra}
|
||||
|
||||
\newfontfamily\fontRoboto[]{Roboto}
|
||||
\newfontfamily\fontUbuntu[]{Ubuntu}
|
||||
\setmainfont{Roboto}
|
||||
|
||||
% \usepackage[style=ieee]{biblatex}
|
||||
% \usepackage{csquotes}
|
||||
% \addbibresource{bibliography.bib}
|
||||
|
||||
% header and footer
|
||||
\usepackage{fancyhdr}
|
||||
\renewcommand{\headrule}{}
|
||||
|
||||
\usepackage[nodayofweek]{datetime}
|
||||
|
||||
\definecolor{darkishyellow}{rgb}{177, 179, 173}
|
||||
|
||||
% for images
|
||||
\usepackage{graphbox}
|
||||
|
||||
% add bookmarks with \hypertarget
|
||||
\usepackage{bookmark}
|
||||
\usepackage{hyperref}
|
||||
|
||||
% heading numberging
|
||||
\setcounter{secnumdepth}{3}
|
||||
\renewcommand\thesection{{\fontUbuntu\arabic{section}}}
|
||||
\renewcommand\thesubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}}}
|
||||
\renewcommand\thesubsubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}}
|
||||
\usepackage{sectsty}
|
||||
\allsectionsfont{\fontUbuntu}
|
||||
\setlength{\headheight}{14pt}
|
||||
|
||||
% no indent at paragraphs
|
||||
\usepackage{parskip}
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.1}
|
||||
\let\tmpitem\itemize
|
||||
\let\tmpenditem\enditemize
|
||||
\renewenvironment{itemize}{\tmpitem\setlength\itemsep{-.4em}}{\tmpenditem}
|
||||
|
||||
\begin{document}
|
||||
\raggedright
|
||||
\pagecolor{darkishyellow}
|
||||
|
||||
\begin{titlepage}
|
||||
\null\vfill
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu Detailontwerp Stabilisatie \par}
|
||||
\vskip 3em
|
||||
% \includegraphics{assets/eriks.50.png}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu Superlight Personal Carrier \par}
|
||||
\end{center}
|
||||
\vskip 25em
|
||||
{
|
||||
\large
|
||||
\lineskip .75em
|
||||
\begin{tabular}{r l}
|
||||
gemaakt door: & Finley van Reenen (0964590@hr.nl) \\
|
||||
& Chris Tan (0992143@hr.nl) \\
|
||||
& Tijn Snijders (1001829@hr.nl) \\
|
||||
& Max Kappert (1030682@hr.nl) \\
|
||||
& Thomas Braam (0989527@hr.nl) \\\\
|
||||
vak code: & ELEPEE51 \\\\
|
||||
ge\"exporteerd op: & \today
|
||||
\end{tabular}
|
||||
}
|
||||
\vfill\null
|
||||
\end{titlepage}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{} % clear all header fields
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu Detailontwerp Stabilisatie}
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu Superlight Personal Carrier}
|
||||
\fancyfoot{} % clear all footer fields
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu E.L.F. van Reenen, C. Tan, T Snijders, M. Kappert en T. Braam}
|
||||
\fancyfoot[CO]{\color{gray}\fontUbuntu }
|
||||
\fancyfoot[RO]{\color{gray}\fontUbuntu \thepage}
|
||||
|
||||
|
||||
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Inleiding}\label{inleiding}
|
||||
|
||||
De SPC\footnote{Superlight Personal Carrier} is een twee wielig concept
|
||||
eenpersoons voertuig. Zonder actieve stabilisatie gaat deze omvallen,
|
||||
hiervoor is een reactie wiel ontworpen. Het aansturen van de motor voor
|
||||
dit wiel is lastig, de volledige kracht moet gehaald worden vanaf
|
||||
stilstand. Dit is alleen mogelijk met FOC\footnote{Field oriented
|
||||
Controll}. Er zijn niet veel motor driver op de markt voor het
|
||||
vermogen (4,5 KW, 45 Nm), hierom is er een op maat gemaakte motor driver
|
||||
ontworpen.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Analyse}\label{analyse}
|
||||
|
||||
Tijn Stijders (student Automotive engineer) heeft de benodigde kracht
|
||||
van \(45 Nm\) op een maximumsnelheid van \(1000 rpm\), dit is \(4.5 kW\)
|
||||
berekent voor dit voertuig. Deze berekening is gebaseerd op
|
||||
inschattingen van het gewicht van het voertuig, maar is nauwkeurig
|
||||
genoeg om te gebruiken.
|
||||
|
||||
\subsection{Motor Keuze}\label{motor-keuze}
|
||||
|
||||
Het is voor ons niet toegestaan om boven de \(50 V\) te testen op de RDM
|
||||
wegens veiligheid. Er zijn erg weinig motoren beschikbaar die onder deze
|
||||
spanning aan de eisen voldoet. Hierom wordt er niet op volledig vermogen
|
||||
getest in dit project, om meer keuze vrijheid te krijgen voor een
|
||||
geschikte motor.
|
||||
|
||||
De volgende motor is gekozen:
|
||||
|
||||
\href{https://nl.aliexpress.com/item/1005006301690150.html?spm=a2g0o.productlist.main.2.6673ifiZifiZQm&algo_pvid=d6292651-bb7c-46b1-a220-6690a13ff967&algo_exp_id=d6292651-bb7c-46b1-a220-6690a13ff967-1&pdp_ext_f=\%7B\%22order\%22\%3A\%2214\%22\%2C\%22eval\%22\%3A\%221\%22\%7D&pdp_npi=4\%40dis\%21EUR\%21168.69\%21168.69\%21\%21\%211350.60\%211350.60\%21\%402103847817496360886601361e6a7e\%2112000036679171853\%21sea\%21NL\%210\%21ABX&curPageLogUid=wQDO26xezkrq&utparam-url=scene\%3Asearch\%7Cquery_from\%3A}{referentie
|
||||
BLDC-motor}
|
||||
|
||||
De gegeven specificatie zijn:
|
||||
|
||||
\begin{longtable}[]{@{}ll@{}}
|
||||
\toprule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
maximale spanning & 60V \\
|
||||
nominaal vermogen & 3000 W \\
|
||||
maximaal vermogen & 6000w \\
|
||||
piek vermogen & 7000w-8000W \\
|
||||
onbelaste snelheid & 3500 rpm \\
|
||||
maximaal rendement & 90\% \\
|
||||
maximaal koppel & 10 Nm \\
|
||||
piekkoppel & 30 Nm \\
|
||||
nettogewicht & 4,5 kg \\
|
||||
max. stroombegrenzing & 150A \\
|
||||
\end{longtable}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/f2dbe830-87ac-4a88-95da-f53177a114a1.png}
|
||||
\caption{grafiek test data van de motor}
|
||||
\end{figure}
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1754}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1228}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1228}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1228}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1053}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.0877}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1228}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.0877}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.0526}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(U\) (V)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(I\) (A)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(P_{in}\) (W)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
rpm
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
koppel (N.m)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
\(P_{out}\) (W)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
efficiëntie (\%)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
tijd (s)
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
onbelast & 47.49 & 3.666 & 174.1 & 3264 & 0.03 & 11.1 & 6.4 & 1 \\
|
||||
test eindpunt\footnote{of wat er ook bedoeld wordt met ``测试结束点''} &
|
||||
42.99 & 60.35 & 2594 & 2294 & 8.77 & 2108 & 81.3 & 71 \\
|
||||
beoordeelde punten\footnote{of wat er ook bedoeld wordt met ``額定点''}
|
||||
& 44.03 & 47.71 & 2101 & 2471 & 6.82 & 1800 & 84.1 & 62 \\
|
||||
max. koppel & 42.99 & 60.35 & 2594 & 2294 & 8.77 & 2108 & 81.3 & 71 \\
|
||||
max. \(P_{out}\) & 42.99 & 60.35 & 2594 & 2294 & 8.77 & 2108 & 81.3 &
|
||||
71 \\
|
||||
max. efficiëntie & 44.72 & 38.53 & 1723 & 2605 & 5.41 & 1476 & 85.7 &
|
||||
55 \\
|
||||
\end{longtable}
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.0741}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1296}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1296}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1296}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1111}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1111}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1296}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.1111}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 16\tabcolsep) * \real{0.0741}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
编号(No.~)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
电压 (V)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
电流 (A)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
输入功率 (W)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
转速 (rpm)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
转矩 (Nm)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
输出功率 (W)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
效率 (\%)
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
时间 (s)
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
1 & 47.49 & 3.666 & 174.1 & 3264 & 0.03 & 11.1 & 6.4 & 1 \\
|
||||
2 & 47.5 & 3.635 & 172.6 & 3262 & 0.03 & 11.14 & 6.5 & 4 \\
|
||||
3 & 47.5 & 3.684 & 175 & 3259 & 0.03 & 11.44 & 6.5 & 7 \\
|
||||
4 & 47.48 & 3.846 & 182.6 & 3256 & 0.05 & 18.52 & 10.1 & 10 \\
|
||||
5 & 47.44 & 4.244 & 201.3 & 3246 & 0.12 & 42.5 & 21.1 & 13 \\
|
||||
6 & 47.39 & 5.001 & 237 & 3233 & 0.23 & 79.21 & 33.4 & 16 \\
|
||||
7 & 47.31 & 5.93 & 280.5 & 3214 & 0.37 & 126.7 & 45.2 & 19 \\
|
||||
8 & 47.21 & 7.09 & 334.7 & 3186 & 0.55 & 184.5 & 55.1 & 22 \\
|
||||
9 & 47.1 & 8.719 & 410.7 & 3154 & 0.77 & 254.5 & 62.0 & 25 \\
|
||||
10 & 46.95 & 10.76 & 505.3 & 3114 & 1.04 & 341.9 & 67.7 & 28 \\
|
||||
11 & 46.78 & 13.04 & 610.3 & 3076 & 1.35 & 437.9 & 71.8 & 31 \\
|
||||
12 & 46.6 & 15.34 & 715 & 3040 & 1.71 & 547.4 & 76.6 & 34 \\
|
||||
13 & 46.38 & 17.9 & 830.3 & 2980 & 2.12 & 662.2 & 79.8 & 37 \\
|
||||
14 & 46.14 & 20.68 & 954.7 & 2917 & 2.57 & 786.9 & 82.4 & 40 \\
|
||||
15 & 45.88 & 23.75 & 1090 & 2859 & 3.08 & 922.6 & 84.6 & 43 \\
|
||||
16 & 45.61 & 27.55 & 1256 & 2801 & 3.6 & 1057 & 84.2 & 46 \\
|
||||
17 & 45.32 & 31.6 & 1432 & 2750 & 4.16 & 1198 & 83.7 & 49 \\
|
||||
18 & 45.04 & 34.65 & 1561 & 2676 & 4.75 & 1331 & 85.3 & 52 \\
|
||||
19 & 44.72 & 38.53 & 1723 & 2605 & 5.41 & 1476 & 85.7 & 55 \\
|
||||
20 & 44.38 & 43.17 & 1916 & 2539 & 6.08 & 1617 & 84.4 & 58 \\
|
||||
21 & 44.03 & 47.71 & 2101 & 2471 & 6.82 & 1800 & 84.1 & 62 \\
|
||||
22 & 43.67 & 52.13 & 2277 & 2415 & 7.48 & 1892 & 83.1 & 65 \\
|
||||
23 & 43.33 & 56.41 & 2444 & 2357 & 8.13 & 2006 & 82.1 & 68 \\
|
||||
24 & 42.99 & 60.35 & 2594 & 2294 & 8.77 & 2108 & 81.3 & 71 \\
|
||||
\end{longtable}
|
||||
|
||||
Er missen wat gegevens om verder te kunnen. De hoeveelheid stroom bij
|
||||
krachten groter dan \(8.77 Nm\) en hoelang de piek kracht volgehouden
|
||||
kan worden.
|
||||
|
||||
\subsection{koppel constante}\label{koppel-constante}
|
||||
|
||||
Om de stroom bij grotere krachten te berekenen is de koppel constante
|
||||
nodig. Dit is de hoeveelheid koppel die per Ampère levert. In dit geval
|
||||
kan deze berekend worden met de volgende formule.
|
||||
|
||||
\[
|
||||
K_T = \frac{\tau}{I-I_{noload}}
|
||||
\]
|
||||
|
||||
\(K_T\): koppel constante in Nm/A\\
|
||||
\(\tau\): koppel in Nm\\
|
||||
\(I\): de stroom nodig om de koppel te halen\\
|
||||
\(I_{noload}\): de stroom die verbruikt wordt als de motor vrij draait
|
||||
|
||||
\(\tau\) en \(I\) is gegeven in de test data. De beste inschatting voor
|
||||
\(I_{noload}\) is het gemiddelde van test 1, 2 en 3. Deze hebben
|
||||
allemaal \(0.03Nm\) koppel, er is geen informatie hoe deze koppel
|
||||
gemeten is. Om te controleren of dit correct is is een plot gemaakt voor
|
||||
elke regel van de test data.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/4aa438b9-f968-4ed9-97f3-dfb934130f6d.png}
|
||||
\caption{Plot van koppel constanten met 3.662 A voor I\_noload}
|
||||
\end{figure}
|
||||
|
||||
x as: test nummer\\
|
||||
y as: koppel constante\\
|
||||
blauwe punten: berekende koppel constante vanuit de test data\\
|
||||
oranje lijn: regressie van de berekende koppel constante
|
||||
|
||||
In deze grafiek is een duidelijke curve te zien aan het begin te zien.
|
||||
Dit duidt er op dat \(I_{noload}\) te hoog is. Dit kan verklaard worden
|
||||
als de meting is uitgevoerd wanneer de tegenmotor nog aangesloten was
|
||||
maar uitgeschakeld. De \(0.03 Nm\) komt, als deze theorie correct is,
|
||||
waarschijnlijk van de lagers van de tegenmotor. Waarschijnlijk mist ook
|
||||
de weerstand van de lagers in de motor zelf.
|
||||
|
||||
Met \(3.52 A\) voor \(I_{noload}\) ziet de grafiek er als volgt uit.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/fcc86ab9-d051-411d-8379-9d4223c5f4a4.png}
|
||||
\caption{Plot van koppel constanten met 3.52 A voor I\_noload}
|
||||
\end{figure}
|
||||
|
||||
Dit is waarschijnlijk dichter bij de werkelijke \(I_{noload}\). Het is
|
||||
hier ook te zien dat de koppel constante ongeveer \(0.15 Nm/A\) is.
|
||||
|
||||
\subsection{Snelheidsconstante en Weerstand
|
||||
Stator}\label{snelheidsconstante-en-weerstand-stator}
|
||||
|
||||
De snelheidsconstante is het aantal rpm dat de motor draait zonder
|
||||
belasting per volt. Deze kan berekend worden met de volgende formule.
|
||||
|
||||
\[
|
||||
K_v = \frac{\omega}{U-U_{th}}
|
||||
\]
|
||||
|
||||
\(K_v\): de snelheidsconstante in rpm/v\\
|
||||
\(\omega\): de snelheid dat de motor draait in rpm\\
|
||||
\(U\): de spanning\\
|
||||
\(U_{th}\): de spanning waarop de motor start met draaien
|
||||
|
||||
Onbelast draait met \(47.49V\) (\(U\)) draait de motor 3264 rpm
|
||||
(\(\omega\)). \(U_{th}\) is niet gegeven, met de gegeven die er wel zijn
|
||||
is de beste methode met de volgende formules.
|
||||
|
||||
\[
|
||||
U=\frac{\omega}{K_v} + \frac{\tau}{K_T} R + U_{th}
|
||||
\]
|
||||
|
||||
\[
|
||||
I=\frac{\omega}{K_vR} + \frac{\tau}{K_T} + I_{noload}
|
||||
\]
|
||||
|
||||
\(U\): de motor spanning\\
|
||||
\(\omega\): de snelheid dat de motor draait in rpm\\
|
||||
\(K_v\): de snelheidsconstante in rpm/v\\
|
||||
\(\tau\): koppel in Nm\\
|
||||
\(K_T\): koppel constante in Nm/A\\
|
||||
\(R\): de weerstand van de stator\\
|
||||
\(U_{th}\): de spanning waarop de motor start met draaien\\
|
||||
\(I\): de stroom nodig om de koppel te halen\\
|
||||
\(I_{noload}\): de stroom die verbruikt wordt als de motor vrij draait
|
||||
|
||||
Als \(\omega = 0\) gelt \(U = \frac{\tau}{K_T} R + U_{th}\) en
|
||||
\(I = \frac{\tau}{K_T} + I_{noload} \Rightarrow IR = U = \frac{\tau}{K_T} R + I_{noload} R\)
|
||||
dus \(U_{th} = R I_{noload}\)
|
||||
|
||||
Hiermee kan de volgende formule opgesteld worden
|
||||
|
||||
\[
|
||||
U = \frac{\omega}{K_v} + \frac{\tau}{K_T} R + R I_{noload}
|
||||
\]
|
||||
|
||||
\[
|
||||
\Rightarrow RU=R\frac{\omega}{K_v} + R^2(\frac{\tau}{K_T} + I_{noload})
|
||||
\]
|
||||
|
||||
\[
|
||||
\Rightarrow \sqrt{\frac{U}{\frac{\omega}{K_v} (\frac{\tau}{K_T} + I_{noload})}} = R
|
||||
\]
|
||||
|
||||
Met de methode gebruikt voor het berekenen van \(I_{noload}\) komen we
|
||||
op de waardes \(K_v = 69rpm/V\), \(R = 170m\Omega\) en
|
||||
\(U_{th} = 598mV\). Hieronder is de grafiek van alle spannignserrors met
|
||||
deze waardes
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/99a21b34-2ff8-475c-8fef-296368d93bae.png}
|
||||
\caption{Grafiek van spanningserror met berekende waarde}
|
||||
\end{figure}
|
||||
|
||||
x as: test nummer\\
|
||||
y as: spannigs error tussen test data en
|
||||
\(U=\frac{\omega}{K_v} + \frac{\tau}{K_T} R + U_{th}\)
|
||||
|
||||
\subsection{Koppel Tijdens het
|
||||
Draaien}\label{koppel-tijdens-het-draaien}
|
||||
|
||||
Om de koppel van \(45 Nm\) te kunnen halen op \(1000 rpm\) is een
|
||||
gearbox nodig. We hebben alles al berekend om de direct de benodigde
|
||||
spanning en stroom te krijgen van koppel en snelheid met de volgende
|
||||
formule.
|
||||
|
||||
\[
|
||||
U = \frac{\omega}{K_v} + \frac{\tau}{K_T} R + U_{th} = \frac{\omega}{69} + \frac{\tau}{0.15} \cdot 0.17 + 0.598
|
||||
\]
|
||||
|
||||
\[
|
||||
I = \frac{\tau}{K_T} + I_{noload} = \frac{\tau}{0.15} + 3.52
|
||||
\]
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1228}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1579}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1404}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1579}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1404}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1579}}
|
||||
>{\raggedleft\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1228}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
gearbox
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
snelheid
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
koppel
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
spanning
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
stroom
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
vermogen
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
||||
efficiëntie\footnote{op basis van 4.5 kW mechanisch vermogen dat
|
||||
berekend is door automotive studenten}
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
1:1 & 1000 rpm & 45.0 Nm & 66.1 V & 303.5 A & 20060 W & 22.4 \% \\
|
||||
1:2 & 2000 rpm & 22.5 Nm & 55.1 V & 153.5 A & 8456 W & 53.2 \% \\
|
||||
1:3 & 3000 rpm & 15.0 Nm & 61.1 V & 103.5 A & 6323 W & 71.2 \% \\
|
||||
1:4 & 4000 rpm & 11.3 Nm & 71.3 V & 78.5 A & 5600 W & 80.4 \% \\
|
||||
1:5 & 5000 rpm & 9.0 Nm & 83.3 V & 63.5 A & 5289 W & 85.1 \% \\
|
||||
\end{longtable}
|
||||
|
||||
Met een 1:4 gearbox kan een maximale snelheid van 875 rpm halen (de
|
||||
motor kan maximaal 3500 rpm draaien). Dit is iets onder de eisen, maar
|
||||
een betere motor hebben wij niet gevonden voor een redelijke prijs.
|
||||
|
||||
voor \(3500rpm\) met \(11.3 Nm\) is een spanning nodig van \(64V\).
|
||||
|
||||
\begin{quote}
|
||||
Er is zat een grote fout in eerdere berekeningen. Terug regekent was dat
|
||||
voor 25 Nm i.p.v. 45 Nm. Dan is er maar ongeveer 45 A met de 1:4 gearbox
|
||||
nodig. De motor driver is dus ontworpen voor 50 A (inclusief een marge)
|
||||
i.p.v. de 80 A die het eigenlijk had moeten zijn. Volgende keer de
|
||||
berekeningen beter controleren. Verder in dit document zal de \(50 A\)
|
||||
gebruik worden
|
||||
\end{quote}
|
||||
|
||||
\subsection{Specificaties}\label{specificaties}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
De drijver moet minimaal \(72 V\) aan kunnen, met voorkeur van
|
||||
\(120 V\) \footnote{Er wordt tot \(50 V\) getest, deze waardes word
|
||||
het voor ontworpen, maar niet tot de limiet getest.}
|
||||
\item
|
||||
de drijver moet minimaal \(50 A\) continu kunnen leveren (wat
|
||||
eigenlijk \(80 A\) had moeten zijn) \footnote{Er wordt tot \(50 V\)
|
||||
getest, deze waardes word het voor ontworpen, maar niet tot de
|
||||
limiet getest.}
|
||||
\item
|
||||
maakt gebruik van Field Orented Controll, om het volledige vermogen te
|
||||
kunnen halen vanaf stilstand.
|
||||
\item
|
||||
De hoek van het voertuig moet gemeten worden.
|
||||
\item
|
||||
Er is een regel loop tussen de hoek sensor en de kracht van de motor.
|
||||
\item
|
||||
Er is een SPI-client connector waarmee verschillende instellingen
|
||||
ingesteld mee kan worden, waaronder het maximaal vermogen.
|
||||
\end{itemize}
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Ontwerp}\label{ontwerp}
|
||||
|
||||
\subsection{Componenten}\label{componenten}
|
||||
|
||||
\subsubsection{FET's}\label{fets}
|
||||
|
||||
MOSFET's was de eerste waar naar gezocht is. Van bijna alle FET's is de
|
||||
maximale stroom in de datasheet is niet realistisch haalbaar, dit
|
||||
vereist veel koeling dat erg lastig is te realiseren. Dit maakt het
|
||||
vinden van een geschikte MOSFET lastig, de meeste kunnen het niet aan
|
||||
alleen. Het is mogelijk om meerde parallel te zetten, maar dit vereist
|
||||
goede thermisch beheer.
|
||||
|
||||
Een andere optie is GaNFET's, hier hebben we een fabrikant (Efficiënt
|
||||
Power Converters; EPC) gevonden die veel redelijkere maximale stroom
|
||||
geven. De EPC3207\footnote{\url{https://epc-co.com/epc/products/gan-fets-and-ics/epc2307}}
|
||||
lijkt met meest geschikt voor dit project. Deze kan \(62A\) aan volgens
|
||||
de datasheet, en verliest ongeveer \(15W\) bij \(50A\). Dit vermogen is
|
||||
goed te koelen met een koelblok.
|
||||
|
||||
\subsubsection{Gate Driver}\label{gate-driver}
|
||||
|
||||
EPC geeft een lijst aan aangeraden gate drivers IC's\footnote{\url{https://epc-co.com/epc/design-support/gan-first-time-right/drivers-and-controllers}}.
|
||||
Er is gekozen voor de NCP51820 van On-Semi uit deze lijst. Deze kan hoge
|
||||
spanningen aan, de schakeling er om heen is makkelijk te maken door een
|
||||
aparte source en sync pinnen, en is goed verkrijgbaar voor een goede
|
||||
prijs.
|
||||
|
||||
\paragraph{Verliezen in de FET}\label{verliezen-in-de-fet}
|
||||
|
||||
De EPC2307 kan tot \(62A\) continu schakelen volgens EPC.
|
||||
|
||||
\[
|
||||
P_{loss} = I^2R_{DS(on)} + P_{loss,sw}
|
||||
\]
|
||||
|
||||
\(P_{loss,sw}\): schakel verliezen
|
||||
|
||||
\(R_{DS(on)} = 10m\Omega\) dus bij \(50A\):
|
||||
|
||||
\[
|
||||
P_{loss} = 50^2 \cdot 0.01 + P_{loss,sw} = 25W + P_{loss,sw}
|
||||
\]
|
||||
|
||||
\(P_{loss,sw}\) is voor GaNFET's erg laag, in de simulatie - die
|
||||
gebaseerd is op de voorbeeld simulatie van EPC - schakelt die binnen
|
||||
\(4ns\). Als we vanuit gaan van linieer schakelgedrag met liniare
|
||||
oplopende stroom (wat tot veel hogeve verliezen lijd dan de
|
||||
werkelijkheid)
|
||||
|
||||
\[
|
||||
P_{loss,sw} = \frac{UIt}{2} \cdot 2f_s
|
||||
\]
|
||||
|
||||
\(U\): voedings spanning \(I\): stroom \(t\): schakeltijd \(f_s\): de
|
||||
schakel frequentie
|
||||
|
||||
Als je dit invult:
|
||||
|
||||
\(U = 120V\), \(I = 50A\), \(t = 4 ns\), \(f_s = 50 kHz\) dan is
|
||||
\(P_{loss,sw} = 1.2 W\).
|
||||
|
||||
Dit geeft een totaal van \(P_{loss} = 16.2W\). Dit is berekent met een
|
||||
ruime schakelverlies met bijna \(100\%\) PWM. De werkelijkheid zal het
|
||||
minder zijn.
|
||||
|
||||
\subsubsection{Stroom Meting}\label{stroom-meting}
|
||||
|
||||
Heel eerlijk, deze was ik een beetje vergeten, dus heb snel de ACS724
|
||||
toegevoegd. Nu hopen dat die de piek stromen aan kan.
|
||||
|
||||
\subsubsection{Hoek Sensor}\label{hoek-sensor}
|
||||
|
||||
Het meten van de hoek hebben we drie manieren voor gevonden:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
afstand sensoren naar de grond
|
||||
\end{itemize}
|
||||
|
||||
Als de grond wat scheef is zal het reactiewiel het voertuig scheef (ten
|
||||
opzichte van zwaartekracht), waardoor het wiel steeds sneller gaat
|
||||
draaien tot die de maximale snelheid bereikt, dan valt het voertuig om.
|
||||
Niet heel handig dus.
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
MEMS-Gyroscoop
|
||||
\end{itemize}
|
||||
|
||||
Meet direct de hoek en is snel. Nadeel is als deze afwijkt veranderd de
|
||||
nul positie en gaat die balanceren op het verkeerde punt.
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
MEMS-Versnellingsmeter
|
||||
\end{itemize}
|
||||
|
||||
Meet de zwaartekracht direct, dus verliest de nul positie niet, maar
|
||||
wordt verstoord bij een stoot.
|
||||
|
||||
De beste optie is een combinatie van een MEMS-gyroscoop en een
|
||||
MEMS-versnellingsmeter. De versnellingsmeter zorgt er voor dat de nul
|
||||
positie niet verloren gaat. En de gyroscoop voor nauwkeurige meting van
|
||||
de hoek. Deze combinatie wordt ook een IMU (Inertial measurement unit)
|
||||
genoemd.
|
||||
|
||||
Uiteindelijk is de M5Stack IMU Pro Mini gekozen, dit is een module in
|
||||
behuizing met een connector. Dit is erg handig, omdat deze goed
|
||||
schokvrij bevestigt moet worden. Er zit ook nog een kompas en luchtdruk
|
||||
sensor op, maar er zijn geen plannen om deze te gebruiken.
|
||||
|
||||
In deze module zit de BMI270\footnote{\url{https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi270/}}
|
||||
van Bosch. De I\textsuperscript{2}C bus van deze IC is direct verbonden
|
||||
met de connector naar buiten toe.
|
||||
|
||||
\subsubsection{Microcontroller}\label{microcontroller}
|
||||
|
||||
Er zijn niet veel vereisten voor de microcontroller, bijna alle
|
||||
microcontrollers hebben SPI, I2C interfaces en een ADC voor de stroom
|
||||
meting. Het belangrijkste is dat die genoeg rekenkracht heeft voor de
|
||||
FOC berekeningen.
|
||||
|
||||
Uiteindelijk is gekozen voor een RP2040 van Raspberry Pi, deze heeft
|
||||
twee ARM Cortex M0+ cores die tot 150 MHz aan kunnen. Het grote voordeel
|
||||
van deze microcontroller is dat ik al een ontwerp klaar heb liggen met
|
||||
alle benodigde componenten.
|
||||
|
||||
\subsubsection{Encoder}\label{encoder}
|
||||
|
||||
Voor FOC moet de positie van polen (magneten) in de rotor ten opzichte
|
||||
van de slots (elektro magneten) in de rotor. Hoe nauwkeuriger dit is hoe
|
||||
effectiever de FOC is om met maximale vermogen uit de motor te kunnen
|
||||
halen.
|
||||
|
||||
Veel motoren worden geleverd met drie hall-effect sensoren die deze
|
||||
relatieve positie direct meten, allen zijn deze niet heel nauwkeurig op
|
||||
lage snelheden.
|
||||
|
||||
Een Relatieve rotary encoder, zoals een optische die sloten telt in een
|
||||
schrijf die gemonteerd is aan de rotor, kan veel nauwkeuriger. Het
|
||||
nadeel is dat deze gekalibreerd moet worden elke keer als de stroom er
|
||||
afgaat.
|
||||
|
||||
Een absolute rotary encoder hoeft maar 1 keer gekalibreerd te worden. De
|
||||
meeste. Er zijn twee soorten absolute encoders die veel gebruikt worden,
|
||||
een die om een as gemonteerd worden (zoals de AMT212B-V\footnote{\url{https://www.sameskydevices.com/product/motion-and-control/rotary-encoders/absolute/modular/amt212b-v}})
|
||||
of een die de oriëntatie van een magneet meet (zoals de
|
||||
AS5600\footnote{\url{https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor}}).
|
||||
|
||||
Er is gekozen voor een breakout board te kopen van de AS5600, deze is
|
||||
het makkelijkst de monteren en goed verkrijgbaar van de absolute
|
||||
encoders.
|
||||
|
||||
\subsection{Schema}\label{schema}
|
||||
|
||||
Het schema is gemaakt in KiCad
|
||||
|
||||
\subsubsection{Half-bridge}\label{half-bridge}
|
||||
|
||||
Voor een BLDC-motor driver zijn drie half-bridges nodig. Bij een ontwerp
|
||||
van een half bridge zijn twee belangrijke dingen, naast component keuze.
|
||||
De gate driver en de power filtering.
|
||||
|
||||
\paragraph{Power Filtering}\label{power-filtering}
|
||||
|
||||
In dit ontwerp worden GaNFET's gebruikt, deze schadelijk binnen enkele
|
||||
nanosecondes. Eleke hoeveelheid aan inductie vanaf de voeding vertraagt
|
||||
deze snelheid, en is een antenne voor de honderden MHz dat door deze
|
||||
schakelsnelheid gegenereerd wordt. Er moeten dus condensatoren zo dicht
|
||||
mogelijk bij de FET's om de inductie zo minimaal mogelijk te maken. Deze
|
||||
moeten ook keramische zijn door de lage ESR. Een nadeel is dat deze voor
|
||||
veel motor drijvers eigenlijk te groot zijn waardoor de afstand tussen
|
||||
de condensator en FET's te groot wordt als de filtering in 1 stage gaat.
|
||||
|
||||
Om te berekenen hoeveel stages nodig zijn, moet eerste de layout gemaakt
|
||||
worden (hier meer over in het hooftstuk PCB). Bij de layout is het geluk
|
||||
om \(7.2 \mu F\) (5 x \(1\mu F\) en 1 x \(2.2\mu F\)) in de eerste stage
|
||||
te plaatsen.
|
||||
|
||||
\begin{quote}
|
||||
TODO: ref to hooftstuk pcb needed!
|
||||
\end{quote}
|
||||
|
||||
Na veel experimenteren in een simulatie in LTspice lijkt \(7.2\mu F\)
|
||||
wel weinig, het zal een stuk beter zijn als er \(20\mu F\) zal passen.
|
||||
|
||||
De tweede stage is wat klein gehouden, om in inschakelstroom beperkt te
|
||||
houden. Dit betekent wel dat er erg dikke kabels nodig zijn om het
|
||||
volledige vermogen aan te kunnen.
|
||||
|
||||
Helaas is de simulatie gecrasht en het bestand corrupt geraakt. Het is
|
||||
hierna niet meer gelukt om de simulatie stabiel opnieuw op te bouwen
|
||||
(vermogens van honderden KW bij een kleine aanpassing). Onder staat is
|
||||
de schakeling van de opnieuw opgebouwde schakeling die dus niet werkt.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/7f783ce7-ee05-4193-844f-240cbec98bce.png}
|
||||
\caption{Schakeling simulatie power filter}
|
||||
\end{figure}
|
||||
|
||||
C2 zijn de keramische condensatoren vlak bij de FET's (eerste stage), C3
|
||||
en C1 zijn solid polymer aluminum capacitors voor de tweede stage. L4 is
|
||||
een ingeschatte inductie van de verbinding tussen de condensatoren en L5
|
||||
is de inductie van de kabels vanaf de accu.
|
||||
|
||||
De condensator waardes zijn een stuk groter dan op het evaluatiebord.
|
||||
Hier zitten 7 condensatoren van \(22nF\) op (\(125nF\) totaal). Ik
|
||||
vermoed dat mijn simulaties wat pessimistischer zijn dat de
|
||||
werkelijkheid.
|
||||
|
||||
\paragraph{Gate Driver}\label{gate-driver-1}
|
||||
|
||||
Het simulatiemodel van de gate driver IC is alleen beschikbaar voor
|
||||
Simplus. Het is mij niet gelukt om de gratis versie van deze software
|
||||
werkend te krijgen of het model te converteren naar een ander format.
|
||||
Dus het berekenen of simuleren voor gate driver gaat niet lukken. Dus ik
|
||||
heb een referentieontwerp van EPC overgenomen met een \(0\Omega\)
|
||||
weerstand bij de sync (hier is wel een \(0\Omega\) jumper gebruikt zodat
|
||||
die later vervangen kan worden met een weerstand) en \(0.39\Omega\) voor
|
||||
de source.
|
||||
|
||||
\subsubsection{Microcontroller}\label{microcontroller-1}
|
||||
|
||||
De microcontroller schakeling is een kopie van een hobby project, deze
|
||||
schakeling is al getest. Er is niks veranderd aan dit ontwerp voor dit
|
||||
project, behalve dat er andere io pinnen gebruikt worden.
|
||||
|
||||
\subsection{PCB}\label{pcb}
|
||||
|
||||
\subsubsection{Stroom Distributie}\label{stroom-distributie}
|
||||
|
||||
Vijftig ampère is erg veel voor een PCB.
|
||||
|
||||
\begin{quote}
|
||||
KiCad Calculator Tools:\\
|
||||
``The calculations are valid for currents up to \(35 A\) (external) or
|
||||
\(17.5 A\) (internal), temperature rises up to \(100^\circ C\), and
|
||||
widths of up to 400 mils (10mm)''
|
||||
\end{quote}
|
||||
|
||||
Deze tool heeft voor \(35A\), \(150mm\) spoor lengte en
|
||||
\(10^\circ C\Delta\) met \(70\mu m\) koper een spoor breedte van
|
||||
\(20.2mm\). De spoorbreedte is al buiten het berijk van deze tool. Als
|
||||
we toch de stroom verandert naar \(50A\) wordt dit \(33.1mm\).
|
||||
|
||||
Met dezelfde instellingen voor \(50A\) in de calculator van DigiKey
|
||||
keeft die dezelfde resultatie. En die van AdvancedPCB, PCBWay en OMNI
|
||||
calculator. Of ze gebruiken allemaal dezelfde beperkte formule of het
|
||||
klopt redelijk.
|
||||
|
||||
Er is gekozen om een spoor breedte van \(40mm\) te gebruiken om iets
|
||||
marge te hebben als deze rekenmachines afwijken. Dit is erg breed, dus
|
||||
dit verdeeld gedaan over een buiten laag en een binnen laag plus nog een
|
||||
extra marge omdat binnenlagen minder goed koelen. De lagen zijn om en om
|
||||
gedaan, zodat het beetje capaciteit tussen deze lagen de inductie ietsje
|
||||
compenseert.
|
||||
|
||||
\subsubsection{Half-bridges}\label{half-bridges}
|
||||
|
||||
Gelukkig heeft EPC (de fabrikant van de FET's) een aantal aangeraden
|
||||
layouts.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/e4a587e6-798b-4fed-8518-9574473bdf79.png}
|
||||
\caption{Aangeraden PCB layout van EPC}
|
||||
\end{figure}
|
||||
|
||||
Bij dit project worden de high-side (HS) en low-side (LS) FET's ongeveer
|
||||
hetzelfde belast, dus ze hebben dezelfde koeling nodig. Dus er is voor
|
||||
de middelste optie gekozen.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics{../../latex/images/43a7f9a1-a3d6-4f2b-844e-be65623e1b12.png}
|
||||
\caption{3D render van een van de half-brdige layouts}
|
||||
\end{figure}
|
||||
|
||||
Hierboven is de layout te zien. De rij condensatoren in het midden
|
||||
tussen de twee FET's (met veel vias er omheen). Rechts daar van de
|
||||
SOIC-8 is de stroom meting IC en rechts onderin de gate driver.
|
||||
|
||||
De uitgang van de FET's voor de stroom meet IC is er ook in de binnen
|
||||
laag direct onder de top laat (de render is van de top laag). Deze zit
|
||||
er om de stroom loop zo'n klein mogelijk oppervlak te geven met de
|
||||
condensatoren, door er onder door te gaan. Hierom stoppen de vias van de
|
||||
voeding ook zo abrupt.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Productie}\label{productie}
|
||||
|
||||
De PCB en stencel zijn gepoduceert door JLCPCB en de componenten zijn
|
||||
gelaats en in de reflow oven gegaan in het SMD-lab op Accademiplein.
|
||||
|
||||
Na dat die uit de over kwam zijn er een aantal soleer balletjes
|
||||
weggehaald, twee soldeer bruggen weg gehaald bij een van de gate driver
|
||||
IC's en de microcontroller opnieuwe met de hand erop gelaast. De
|
||||
microcontroller had teveel tin op de groundpad aan de onderkant,
|
||||
waardoor deze omhoog kwam en de pinnen aan de zijkant boven de PCB
|
||||
zweefde onder contact.
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
183
latex/detailontwerp_stuursysteem.latex
Normal file
@ -0,0 +1,183 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, portrait, includehead, includefoot, margin=1.5cm]{geometry}
|
||||
|
||||
\usepackage[dutch]{babel}
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
\usepackage{xcolor}
|
||||
\usepackage{makecell}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{adjustbox}
|
||||
|
||||
\usepackage{framed}
|
||||
|
||||
\usepackage{longtable}
|
||||
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{xunicode}
|
||||
\usepackage{xltxtra}
|
||||
|
||||
\newfontfamily\fontRoboto[]{Roboto}
|
||||
\newfontfamily\fontUbuntu[]{Ubuntu}
|
||||
\setmainfont{Roboto}
|
||||
|
||||
% \usepackage[style=ieee]{biblatex}
|
||||
% \usepackage{csquotes}
|
||||
% \addbibresource{bibliography.bib}
|
||||
|
||||
% header and footer
|
||||
\usepackage{fancyhdr}
|
||||
\renewcommand{\headrule}{}
|
||||
|
||||
\usepackage[nodayofweek]{datetime}
|
||||
|
||||
\definecolor{darkishyellow}{rgb}{177, 179, 173}
|
||||
|
||||
% for images
|
||||
\usepackage{graphbox}
|
||||
|
||||
% add bookmarks with \hypertarget
|
||||
\usepackage{bookmark}
|
||||
\usepackage{hyperref}
|
||||
|
||||
% heading numberging
|
||||
\setcounter{secnumdepth}{3}
|
||||
\renewcommand\thesection{{\fontUbuntu\arabic{section}}}
|
||||
\renewcommand\thesubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}}}
|
||||
\renewcommand\thesubsubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}}
|
||||
\usepackage{sectsty}
|
||||
\allsectionsfont{\fontUbuntu}
|
||||
\setlength{\headheight}{14pt}
|
||||
|
||||
% no indent at paragraphs
|
||||
\usepackage{parskip}
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.1}
|
||||
\let\tmpitem\itemize
|
||||
\let\tmpenditem\enditemize
|
||||
\renewenvironment{itemize}{\tmpitem\setlength\itemsep{-.4em}}{\tmpenditem}
|
||||
|
||||
\begin{document}
|
||||
\raggedright
|
||||
\pagecolor{darkishyellow}
|
||||
|
||||
\begin{titlepage}
|
||||
\null\vfill
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu \par}
|
||||
\vskip 3em
|
||||
% \includegraphics{assets/eriks.50.png}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu Superlight Personal Carrier \par}
|
||||
\end{center}
|
||||
\vskip 25em
|
||||
{
|
||||
\large
|
||||
\lineskip .75em
|
||||
\begin{tabular}{r l}
|
||||
gemaakt door: & Finley van Reenen (0964590@hr.nl) \\
|
||||
& Chris Tan (0992143@hr.nl) \\
|
||||
& Tijn Snijders (1001829@hr.nl) \\
|
||||
& Max Kappert (1030682@hr.nl) \\
|
||||
& Thomas Braam (0989527@hr.nl) \\\\
|
||||
vak code: & ELEPEE51 \\\\
|
||||
ge\"exporteerd op: & \today
|
||||
\end{tabular}
|
||||
}
|
||||
\vfill\null
|
||||
\end{titlepage}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{} % clear all header fields
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu }
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu Superlight Personal Carrier}
|
||||
\fancyfoot{} % clear all footer fields
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu E.L.F. van Reenen, C. Tan, T Snijders, M. Kappert en T. Braam}
|
||||
\fancyfoot[CO]{\color{gray}\fontUbuntu }
|
||||
\fancyfoot[RO]{\color{gray}\fontUbuntu \thepage}
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Vehicle Control unit}\label{vehicle-control-unit}
|
||||
|
||||
De VCU is een belangrijk onderdeel van het systeem, hiermee kunnen we
|
||||
het voertuig in een richting sturen en vooruit bewegen, de belangrijkste
|
||||
keuzes hierin zijn in welke taal we willen gaan programmeren en wat voor
|
||||
soort microcontroller we willen. De reden hiervoor is zodat de volgende
|
||||
team makkelijker kan omgaan met de code en het systeem makkelijker
|
||||
kunnen uitbreiden. het makkelijkst is dan om met de Arduino IDE en taal
|
||||
verder te gaan, omdat het een bekent en veel gedocumenteerd systeem is
|
||||
waar je veel over kan vinden op internet tegenover veel andere IDE's,
|
||||
programmeer talen en microcontrollers. verder moet het ook draadloos
|
||||
verbinding kunnen maken met een console controller zodat de volgende
|
||||
teams eventueel een andere keuze kunnen maken hoe ze willen sturen.
|
||||
Daarom hebben we voor de ESP32 gekozen omdat het alles aantikt met een
|
||||
gezond aantal GPIO pinnen.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Actuator}\label{actuator}
|
||||
|
||||
De actuator hebben we nodig om de wielen in een richting te kunnen
|
||||
sturen volgens Max Kappert(student automotive engineer) hebben we de
|
||||
volgende parameters gekregen die we nodig hebben om het voertuig te
|
||||
kunnen sturen.
|
||||
|
||||
\begin{longtable}[]{@{}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.4051}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1646}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1519}}
|
||||
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2785}}@{}}
|
||||
\toprule\noalign{}
|
||||
\begin{minipage}[b]{\linewidth}\raggedright
|
||||
Parameter
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Waarde
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Eenheid
|
||||
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
||||
Opmerking
|
||||
\end{minipage} \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
Voertuigspanning & 12 - 14 & \(V_{DC}\) & typisch voor auto-ECU's \\
|
||||
Stuurspanningdemperkle & 0 - 5 & \(V_{DC}\) & naloge regeling \\
|
||||
PWM-signaal frequentie & 1000 - 3000 & \(Hz\) & Typische range voor
|
||||
aansturing \\
|
||||
PWM duty cycle & 10 - 90 & \(\%\) & \(0%
|
||||
\): minimale demping, \(90%
|
||||
\): maximale demping \\
|
||||
Stroomverbruik klep & 0.5 - 2 & \(A\) & Afhankelijk van de interne
|
||||
weerstand \\
|
||||
Wielsnelheid & 0 - 250 & \(km/h\) & Meet snelheid per wiel \\
|
||||
Karrosserieversnelling & -3 tot +3 & \(g\) & Laterale en verticale
|
||||
versnellingen \\
|
||||
Axiale potentiometer (veerweg) & 0 - 50 & \(mm\) & Meet veeruitslag \\
|
||||
Temperatuur werkbereik & -40 tot +85 & \(^\circ C\) &
|
||||
Automobielstandaard \\
|
||||
\end{longtable}
|
||||
|
||||
Voor de Actuator is er een keuze gemaakt voor CDC (Continuous Damping
|
||||
Control) demper van SACHS, Maar vanwege de besteltijden van dit soort
|
||||
componenten kunnen we dit niet gebruiken. Daarom gebruiken we een
|
||||
actuator die er al staat, de A0-01/M van S-LINE. om de actuator te
|
||||
besturen gebruiken we een motordriver, de MDD20A. Dit is omdat we het al
|
||||
hebben en werkt met de huidige actuatoren en voldoende de parameters van
|
||||
de actuatoren behaald, daarom hebben we besloten om niet een nieuwe te
|
||||
kopen of te ontwerpen. Om ervoor te zorgen dat de actuatoren niet te ver
|
||||
gaan gebruiken we de AS5600 magnetic encoder. Dit is omdat de encoder
|
||||
een absoluut positie meegeeft en daarom voor minder problemen zorgt als
|
||||
het voertuig opnieuw opstart.
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
BIN
latex/images/0623b75b-1585-421a-9329-4feba9e00ae2.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
latex/images/224f3e03-21c4-4034-8905-9848007b253e.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
latex/images/43a7f9a1-a3d6-4f2b-844e-be65623e1b12.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
latex/images/4aa438b9-f968-4ed9-97f3-dfb934130f6d.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
latex/images/506da834-573f-4c24-8b22-15e82df64301.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
latex/images/6f8ac25b-16f5-41ae-b7cf-980ddfbfbfd7.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
latex/images/7f783ce7-ee05-4193-844f-240cbec98bce.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
latex/images/93b15853-82d2-48a2-9cbb-bdf3f4b0fb4b.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
latex/images/958b5da9-80bc-4069-9a13-acc8a0fe6b5b.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
latex/images/99a21b34-2ff8-475c-8fef-296368d93bae.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
latex/images/b87f75dc-87b1-47a9-adfe-bc389c5377fb.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
latex/images/c75e80d7-dcc2-454e-adb2-dc4a1925b2bf.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
latex/images/c776081d-b52e-40b8-84f4-065145305f76.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
latex/images/c7dcc010-3e60-4f73-a520-a128e600615a.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
latex/images/d62ce8e7-705b-46da-884c-e3da26c39be9.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
latex/images/e4a587e6-798b-4fed-8518-9574473bdf79.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
latex/images/f2dbe830-87ac-4a88-95da-f53177a114a1.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
latex/images/fcc86ab9-d051-411d-8379-9d4223c5f4a4.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
1138
latex/plan_van_aanpak.latex
Normal file
2784
latex/projectdocument.latex
Normal file
168
latex/softwareontwerp_stabilisatie.latex
Normal file
@ -0,0 +1,168 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, portrait, includehead, includefoot, margin=1.5cm]{geometry}
|
||||
|
||||
\usepackage[dutch]{babel}
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
\usepackage{xcolor}
|
||||
\usepackage{makecell}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{adjustbox}
|
||||
|
||||
\usepackage{framed}
|
||||
|
||||
\usepackage{longtable}
|
||||
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{xunicode}
|
||||
\usepackage{xltxtra}
|
||||
|
||||
\newfontfamily\fontRoboto[]{Roboto}
|
||||
\newfontfamily\fontUbuntu[]{Ubuntu}
|
||||
\setmainfont{Roboto}
|
||||
|
||||
% \usepackage[style=ieee]{biblatex}
|
||||
% \usepackage{csquotes}
|
||||
% \addbibresource{bibliography.bib}
|
||||
|
||||
% header and footer
|
||||
\usepackage{fancyhdr}
|
||||
\renewcommand{\headrule}{}
|
||||
|
||||
\usepackage[nodayofweek]{datetime}
|
||||
|
||||
\definecolor{darkishyellow}{rgb}{177, 179, 173}
|
||||
|
||||
% for images
|
||||
\usepackage{graphbox}
|
||||
|
||||
% add bookmarks with \hypertarget
|
||||
\usepackage{bookmark}
|
||||
\usepackage{hyperref}
|
||||
|
||||
% heading numberging
|
||||
\setcounter{secnumdepth}{3}
|
||||
\renewcommand\thesection{{\fontUbuntu\arabic{section}}}
|
||||
\renewcommand\thesubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}}}
|
||||
\renewcommand\thesubsubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}}
|
||||
\usepackage{sectsty}
|
||||
\allsectionsfont{\fontUbuntu}
|
||||
\setlength{\headheight}{14pt}
|
||||
|
||||
% no indent at paragraphs
|
||||
\usepackage{parskip}
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.1}
|
||||
\let\tmpitem\itemize
|
||||
\let\tmpenditem\enditemize
|
||||
\renewenvironment{itemize}{\tmpitem\setlength\itemsep{-.4em}}{\tmpenditem}
|
||||
|
||||
\begin{document}
|
||||
\raggedright
|
||||
\pagecolor{darkishyellow}
|
||||
|
||||
\begin{titlepage}
|
||||
\null\vfill
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu Softwareontwerp Sabilisatie \par}
|
||||
\vskip 3em
|
||||
% \includegraphics{assets/eriks.50.png}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu Superlight Personal Carrier \par}
|
||||
\end{center}
|
||||
\vskip 25em
|
||||
{
|
||||
\large
|
||||
\lineskip .75em
|
||||
\begin{tabular}{r l}
|
||||
gemaakt door: & Finley van Reenen (0964590@hr.nl) \\
|
||||
& Chris Tan (0992143@hr.nl) \\
|
||||
& Tijn Snijders (1001829@hr.nl) \\
|
||||
& Max Kappert (1030682@hr.nl) \\
|
||||
& Thomas Braam (0989527@hr.nl) \\\\
|
||||
vak code: & ELEPEE51 \\\\
|
||||
ge\"exporteerd op: & \today
|
||||
\end{tabular}
|
||||
}
|
||||
\vfill\null
|
||||
\end{titlepage}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{} % clear all header fields
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu Softwareontwerp Sabilisatie}
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu Superlight Personal Carrier}
|
||||
\fancyfoot{} % clear all footer fields
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu E.L.F. van Reenen, C. Tan, T Snijders, M. Kappert en T. Braam}
|
||||
\fancyfoot[CO]{\color{gray}\fontUbuntu }
|
||||
\fancyfoot[RO]{\color{gray}\fontUbuntu \thepage}
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
|
||||
\section{inleiding}\label{inleiding}
|
||||
|
||||
\newpage
|
||||
|
||||
\section{FoC library}\label{foc-library}
|
||||
|
||||
In C zijn er niet veel librarys voor FOC, de enige goede library die we
|
||||
hebben gevonden is \href{https://www.simplefoc.com/}{SimpleFOCproject}.
|
||||
Dit komt er in debuurd van een framework. In de video van de homepagina
|
||||
worden een aantal gemeenschaps projecten laten zien, waarvan meerdere
|
||||
een reactiewiel voor sabilisatie laat zien. Dit belooft veel goeds, toch
|
||||
is er gekozen om een andere library te kiezen. Het goed implementeren
|
||||
van een regel kring met de IMU vraagd veel kennis van hoe dit
|
||||
`framework' werkt. Onze implementatie is niet exact het zelfde als die
|
||||
van deze gemeenschaps projecten. Wij hebben dus de kennis nogdig om deze
|
||||
code aan te passen.
|
||||
|
||||
Er is gekozen om te werken met de \href{https://lib.rs/crates/foc}{Rust
|
||||
library FOC}. Deze library is alleen een implementatie voor het FOC
|
||||
algaritme, wadoor er meer flexibilitijd is hoe het systeem verder werkt.
|
||||
Dit kan dus ook verder geoptimaliseerd worden en meer ge configureerd.
|
||||
dat tweede is de grootste reden warom voor deze library is gekozen. Er
|
||||
is behoefte aan een systeem dat aangepast kan worden naar wat later
|
||||
beter blijkt te zijn.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Rust op RP2040}\label{rust-op-rp2040}
|
||||
|
||||
Rust voor microcontrollers is nog in een sooft alpha versie. Het werkt
|
||||
voor het grootste deel, maar hier en daar zijn nog wat beperkingen.
|
||||
Vrijwel al deze beperkingen hebben een workaround. Het groote voordeel
|
||||
is dat er een `officele' standaard is voor het HAL interface\footnote{embeded-hal:
|
||||
\url{https://docs.rs/embedded-hal}}. Dit maakt zorgd er voor dat er
|
||||
veel librarys voor IC's beschikbaar zijn die gewoon werken.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Async}\label{async}
|
||||
|
||||
De standaard async funtionalitijd in rust werkt nog niet voor
|
||||
microcontrollers\footnote{\url{https://www.youtube.com/watch?v=H7NtzyP9q8E}}.
|
||||
Hier zijn wel alternative librarys voor\footnote{\url{https://arewertosyet.com/}},
|
||||
Embassy\footnote{\url{https://embassy.dev/}} en RTIC\footnote{\url{https://rtic.rs}}
|
||||
zijn de twee die het meest genoemd worden. Embassy ziet er wat
|
||||
eenvoudiger uit als RTIC, daarvoor is ook gekozen om te gebruiken.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{AS5600}\label{as5600}
|
||||
|
||||
Er wordt gebruik gemaakt de AS5600 library van Rafael
|
||||
Bachmann\footnote{\url{https://github.com/barafael/as5600-rs}}.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{}\label{section}
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
407
latex/unittest_stabilisatie.latex
Normal file
@ -0,0 +1,407 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, portrait, includehead, includefoot, margin=1.5cm]{geometry}
|
||||
|
||||
\usepackage[dutch]{babel}
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
\usepackage{xcolor}
|
||||
\usepackage{makecell}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{adjustbox}
|
||||
|
||||
\usepackage{framed}
|
||||
|
||||
\usepackage{longtable}
|
||||
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{xunicode}
|
||||
\usepackage{xltxtra}
|
||||
|
||||
\newfontfamily\fontRoboto[]{Roboto}
|
||||
\newfontfamily\fontUbuntu[]{Ubuntu}
|
||||
\setmainfont{Roboto}
|
||||
|
||||
% \usepackage[style=ieee]{biblatex}
|
||||
% \usepackage{csquotes}
|
||||
% \addbibresource{bibliography.bib}
|
||||
|
||||
% header and footer
|
||||
\usepackage{fancyhdr}
|
||||
\renewcommand{\headrule}{}
|
||||
|
||||
\usepackage[nodayofweek]{datetime}
|
||||
|
||||
\definecolor{darkishyellow}{rgb}{177, 179, 173}
|
||||
|
||||
% for images
|
||||
\usepackage{graphbox}
|
||||
|
||||
% add bookmarks with \hypertarget
|
||||
\usepackage{bookmark}
|
||||
\usepackage{hyperref}
|
||||
|
||||
% heading numberging
|
||||
\setcounter{secnumdepth}{3}
|
||||
\renewcommand\thesection{{\fontUbuntu\arabic{section}}}
|
||||
\renewcommand\thesubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}}}
|
||||
\renewcommand\thesubsubsection{{\fontUbuntu\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}}
|
||||
\usepackage{sectsty}
|
||||
\allsectionsfont{\fontUbuntu}
|
||||
\setlength{\headheight}{14pt}
|
||||
|
||||
% no indent at paragraphs
|
||||
\usepackage{parskip}
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.1}
|
||||
\let\tmpitem\itemize
|
||||
\let\tmpenditem\enditemize
|
||||
\renewenvironment{itemize}{\tmpitem\setlength\itemsep{-.4em}}{\tmpenditem}
|
||||
|
||||
\begin{document}
|
||||
\raggedright
|
||||
\pagecolor{darkishyellow}
|
||||
|
||||
\begin{titlepage}
|
||||
\null\vfill
|
||||
\begin{center}
|
||||
{\Huge\fontUbuntu \par}
|
||||
\vskip 3em
|
||||
% \includegraphics{assets/eriks.50.png}
|
||||
\vskip 3em
|
||||
{\huge\fontUbuntu Superlight Personal Carrier \par}
|
||||
\end{center}
|
||||
\vskip 25em
|
||||
{
|
||||
\large
|
||||
\lineskip .75em
|
||||
\begin{tabular}{r l}
|
||||
gemaakt door: & Finley van Reenen (0964590@hr.nl) \\
|
||||
& Chris Tan (0992143@hr.nl) \\
|
||||
& Tijn Snijders (1001829@hr.nl) \\
|
||||
& Max Kappert (1030682@hr.nl) \\
|
||||
& Thomas Braam (0989527@hr.nl) \\\\
|
||||
vak code: & ELEPEE51 \\\\
|
||||
ge\"exporteerd op: & \today
|
||||
\end{tabular}
|
||||
}
|
||||
\vfill\null
|
||||
\end{titlepage}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{} % clear all header fields
|
||||
\fancyhead[LO]{\color{gray}\fontUbuntu }
|
||||
\fancyhead[RO]{\color{gray}\fontUbuntu Superlight Personal Carrier}
|
||||
\fancyfoot{} % clear all footer fields
|
||||
\fancyfoot[LO]{\color{gray}\fontUbuntu E.L.F. van Reenen, C. Tan, T Snijders, M. Kappert en T. Braam}
|
||||
\fancyfoot[CO]{\color{gray}\fontUbuntu }
|
||||
\fancyfoot[RO]{\color{gray}\fontUbuntu \thepage}
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Unit Testen Stabilisatie}\label{unit-testen-stabilisatie}
|
||||
|
||||
\subsection{Voedingen}\label{voedingen}
|
||||
|
||||
\subsubsection{Benodigdheden}\label{benodigdheden}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
12V voeding
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Procedure}\label{procedure}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 50 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
meet de uitgangen van de twee voedingen, vul de tabel hieronder in
|
||||
\end{enumerate}
|
||||
|
||||
\begin{longtable}[]{@{}lrr@{}}
|
||||
\toprule\noalign{}
|
||||
& \(5V\) & \(12V\) \\
|
||||
\midrule\noalign{}
|
||||
\endhead
|
||||
\bottomrule\noalign{}
|
||||
\endlastfoot
|
||||
minimaal & \(4.5V\) & \(11.5V\) \\
|
||||
maximaal & \(5.5V\) & \(12.5V\) \\
|
||||
gemeeten & & \\
|
||||
\end{longtable}
|
||||
|
||||
Geslaagd:
|
||||
|
||||
opmergingen:
|
||||
|
||||
\subsection{Microcontroller}\label{microcontroller}
|
||||
|
||||
\subsubsection{Benodigdheden}\label{benodigdheden-1}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
12V voeding als de voedingen werken, anders met een 5V en 3.3v voeding
|
||||
\item
|
||||
computer met Arduino IDE geinstaleerd
|
||||
\item
|
||||
USB B kabel naar de computer
|
||||
\item
|
||||
ledje met bijhoren de weerstand voor 3.3V
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Procedure}\label{procedure-1}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
sluit een ledje aan op een van de GPIO pinnen
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
sluit de USB kabel aan op de computer (dit is veilig omdat de USB
|
||||
alleen verbonden is met ground, de V+ is floating)
|
||||
\item
|
||||
upload een blinky voorbeeld progamma met de GPIO ingesteld van de led
|
||||
\item
|
||||
bekijk of het lidje knipperd
|
||||
\end{enumerate}
|
||||
|
||||
Geslaagd:
|
||||
|
||||
opmergingen:
|
||||
|
||||
\subsection{Half-brug}\label{half-brug}
|
||||
|
||||
\subsubsection{Benodigdheden}\label{benodigdheden-2}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
als de microcontoller werkt:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
12V voeding als de voedingen werken, anders met een 5V en 3.3v
|
||||
voeding
|
||||
\item
|
||||
30V voor V Motor
|
||||
\item
|
||||
computer met Arduino IDE geinstaleerd
|
||||
\item
|
||||
USB B kabel naar de computer
|
||||
\item
|
||||
ocsiloscoop
|
||||
\end{itemize}
|
||||
\item
|
||||
zo niet:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
10V voor V motor
|
||||
\item
|
||||
signaal generator met twee kanalen
|
||||
\item
|
||||
ocsioscoop
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{procedure}\label{procedure-2}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
sluit de ociloscoop aan op een van de uitgangen van de drijver (er
|
||||
komt 30V op te staan, beruik de juiste probe; geen juiste probe bij de
|
||||
hand, zelt de voeding voor V motor wa lager)
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
sluit de USB kabel aan op de computer (dit is veilig omdat de USB
|
||||
alleen verbonden is met ground, de V+ is floating)
|
||||
\item
|
||||
upload een test progamma die de PWM aansuurt voor de FET's
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
de PWM per half bridge zijn aangesloten op de a en b uitganen van 1
|
||||
timer per half brug. zorg dat een van de uitput geinverteerd is en
|
||||
de twee vergeleijk waardes zo zijn zodat er een korte dead time is.
|
||||
ze mogen nooit tegerlijk hoog zijn!
|
||||
\end{itemize}
|
||||
\item
|
||||
bekijk het signaal op de osciloscoop
|
||||
\item
|
||||
herhaal de test voor alle drie de half bruggen
|
||||
\end{enumerate}
|
||||
|
||||
resultaat:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
brug a:
|
||||
\item
|
||||
brug b:
|
||||
\item
|
||||
brug c:
|
||||
\end{itemize}
|
||||
|
||||
opmerkingen:
|
||||
|
||||
\subsection{IMU}\label{imu}
|
||||
|
||||
\subsubsection{benodigdheden}\label{benodigdheden-3}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
een microcontroller met I2C (kan de motoro driver zelf zijn)
|
||||
\item
|
||||
computer met Arduino IDE geinstaleerd
|
||||
\item
|
||||
USB B kabel naar de computer
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{procedure}\label{procedure-3}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
sluit de IMU aan op de motor driver
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
sluit de USB kabel aan op de computer (dit is veilig omdat de USB
|
||||
alleen verbonden is met ground, de V+ is floating)
|
||||
\item
|
||||
upload een blinky voorbeeld progamma met de GPIO ingesteld van de led
|
||||
\item
|
||||
bekijk de serial plotter terwel je de IMU draait.
|
||||
\end{enumerate}
|
||||
|
||||
Geslaagd:
|
||||
|
||||
opmergingen:
|
||||
|
||||
\subsection{stroom meting}\label{stroom-meting}
|
||||
|
||||
\subsubsection{benodigdheden}\label{benodigdheden-4}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
12V voeding (of 5V bij beperking van beschikbaare voedingen)
|
||||
\item
|
||||
voeding die 50A kan leveren (of zoveel mogenlijk) voor V motor
|
||||
\item
|
||||
bij voorkeur een load die de \(50A_{DC}\) kan op nemen, ander kan de
|
||||
uitgang korgesloten worden als de voeding dat toestaat.
|
||||
\item
|
||||
multimeter
|
||||
\item
|
||||
computer met Arduino IDE geinstaleerd
|
||||
\item
|
||||
USB B kabel naar de computer
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{procedure}\label{procedure-4}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
sluit de load aan op deen van de uitgangen van de motor driver
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
sluit de USB kabel aan op de computer (dit is veilig omdat de USB
|
||||
alleen verbonden is met ground, de V+ is floating)
|
||||
\item
|
||||
upload een programma die alle high side fet's dicht zet en de low side
|
||||
fet's open
|
||||
\item
|
||||
sluit de voeding voor V motor aan
|
||||
\item
|
||||
meet uitgang van de stroom meeting
|
||||
\item
|
||||
zet de v motor voeding uit en verlaats de load naar een andere uitgang
|
||||
\item
|
||||
zet de voeding weer aan en meet de stroom meting
|
||||
\item
|
||||
herhaal dit voor de laaste uitgang
|
||||
\end{enumerate}
|
||||
|
||||
TODO: add meet table
|
||||
|
||||
Geslaagd:
|
||||
|
||||
opmergingen:
|
||||
|
||||
\subsection{encoder}\label{encoder}
|
||||
|
||||
\subsubsection{benodigdheden}\label{benodigdheden-5}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
een microcontroller met I2C (kan de motoro driver zelf zijn)
|
||||
\item
|
||||
computer met Arduino IDE geinstaleerd
|
||||
\item
|
||||
USB B kabel naar de computer
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{procedure}\label{procedure-5}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\tightlist
|
||||
\item
|
||||
sluit de Encoder aan op de motor driver
|
||||
\item
|
||||
snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
\item
|
||||
sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
\item
|
||||
sluit de USB kabel aan op de computer (dit is veilig omdat de USB
|
||||
alleen verbonden is met ground, de V+ is floating)
|
||||
\item
|
||||
upload een voorbeeld progamma voor de encoder.
|
||||
\item
|
||||
bekijk de serial plotter terwel je de magneer van de encoder draait
|
||||
\end{enumerate}
|
||||
|
||||
Geslaagd:
|
||||
|
||||
opmergingen:
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
162
makefile
@ -1,21 +1,21 @@
|
||||
|
||||
all: all_docduments package
|
||||
all: all_booklets all_docduments
|
||||
|
||||
all_docduments: prepare pdf/plan_van_aanpak.pdf pdf/detailontwerp_stabilisatie.pdf pdf/detailontwerp_stuursysteem.pdf pdf/unittest_stabilisatie.pdf pdf/softwareontwerp_stabilisatie.pdf pdf/projectdocument.pdf pdf/pakket_van_eisen.pdf pdf/competenties.pdf pdf/foc_onderzoek.pdf
|
||||
all_booklets: prepare pdf/plan_van_aanpak.booklet.pdf pdf/detailontwerp_stabilisatie.booklet.pdf pdf/detailontwerp_stuursysteem.booklet.pdf pdf/unittest_stabilisatie.booklet.pdf pdf/softwareontwerp_stabilisatie.booklet.pdf pdf/projectdocument.booklet.pdf pdf/pakket_van_eisen.booklet.pdf pdf/competenties.booklet.pdf pdf/foc_onderzoek.booklet.pdf
|
||||
all_docduments: prepare pdf/plan_van_aanpak.pdf pdf/detailontwerp_stabilisatie.pdf pdf/detailontwerp_stuursysteem.pdf pdf/unittest_stabilisatie.pdf pdf/softwareontwerp_stabilisatie.pdf pdf/projectdocument.pdf
|
||||
all_booklets: prepare pdf/plan_van_aanpak.booklet.pdf pdf/detailontwerp_stabilisatie.booklet.pdf pdf/detailontwerp_stuursysteem.booklet.pdf pdf/unittest_stabilisatie.booklet.pdf pdf/softwareontwerp_stabilisatie.booklet.pdf pdf/projectdocument.booklet.pdf
|
||||
|
||||
prepare:
|
||||
mkdir -p pdf
|
||||
mkdir -p latex pdf
|
||||
|
||||
clean:
|
||||
rm -r build
|
||||
|
||||
clean_all:
|
||||
rm -r build pdf
|
||||
rm -r build latex pdf
|
||||
|
||||
install_arch:
|
||||
mkdir -p build/install
|
||||
pacman -Sy --noconfirm --needed curl zip unzip texlive-basic texlive-langeuropean pandoc
|
||||
pacman -Sy --noconfirm --needed curl unzip texlive-basic texlive-langeuropean pandoc
|
||||
|
||||
test -e build/install/ubuntu.zip || curl https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip -o build/install/ubuntu.zip
|
||||
test -d build/install/ubuntu && rm -r build/install/ubuntu || echo
|
||||
@ -39,7 +39,7 @@ install_ubuntu:
|
||||
mkdir -p build/install
|
||||
apt-get update
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
curl zip unzip texlive texlive-lang-european texlive-lang-greek texlive-xetex pandoc
|
||||
curl unzip texlive texlive-lang-european texlive-lang-greek texlive-xetex pandoc
|
||||
|
||||
test -e build/install/ubuntu.zip || curl https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip -o build/install/ubuntu.zip
|
||||
test -d build/install/ubuntu && rm -r build/install/ubuntu || echo
|
||||
@ -59,53 +59,51 @@ install_ubuntu:
|
||||
chmod 0775 /usr/share/fonts/roboto
|
||||
chmod 0664 /usr/share/fonts/roboto/*
|
||||
|
||||
# =======================================
|
||||
# === latex generation ==================
|
||||
# =======================================
|
||||
|
||||
latex/plan_van_aanpak.latex: converters/mdToLatex.sh converters/template.latex markdown/plan_van_aanpak.md
|
||||
mkdir -p build/plan_van_aanpak
|
||||
bash converters/mdToLatex.sh markdown/plan_van_aanpak.md latex/plan_van_aanpak.latex
|
||||
|
||||
latex/pakket_van_eisen.latex: converters/mdToLatex.sh converters/template.latex markdown/pakket_van_eisen.md
|
||||
mkdir -p build/pakket_van_eisen
|
||||
bash converters/mdToLatex.sh markdown/pakket_van_eisen.md latex/pakket_van_eisen.latex
|
||||
|
||||
latex/detailontwerp_stabilisatie.latex: converters/mdToLatex.sh converters/template.latex markdown/detailontwerp_stabilisatie.md
|
||||
mkdir -p build/detailontwerp_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/detailontwerp_stabilisatie.md latex/detailontwerp_stabilisatie.latex
|
||||
|
||||
latex/detailontwerp_stuursysteem.latex: converters/mdToLatex.sh converters/template.latex markdown/detailontwerp_stuursysteem.md
|
||||
mkdir -p build/detailontwerp_stuursysteem
|
||||
bash converters/mdToLatex.sh markdown/detailontwerp_stuursysteem.md latex/detailontwerp_stuursysteem.latex
|
||||
|
||||
latex/unittest_stabilisatie.latex: converters/mdToLatex.sh converters/template.latex markdown/unittest_stabilisatie.md
|
||||
mkdir -p build/unittest_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/unittest_stabilisatie.md latex/unittest_stabilisatie.latex
|
||||
|
||||
# latex/unittest_stuursysteem.latex: converters/mdToLatex.sh converters/template.latex markdown/unittest_stuursysteem.md
|
||||
# mkdir -p build/unittest_stuursysteem
|
||||
# bash converters/mdToLatex.sh markdown/unittest_stuursysteem.md latex/unittest_stuursysteem.latex
|
||||
|
||||
latex/softwareontwerp_stabilisatie.latex: converters/mdToLatex.sh converters/template.latex markdown/softwareontwerp_stabilisatie.md
|
||||
mkdir -p build/softwareontwerp_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/softwareontwerp_stabilisatie.md latex/softwareontwerp_stabilisatie.latex
|
||||
|
||||
latex/projectdocument.latex: converters/mdToLatex.sh converters/template.latex markdown/projectdocument.md
|
||||
mkdir -p build/projectdocument
|
||||
bash converters/mdToLatex.sh markdown/projectdocument.md latex/projectdocument.latex
|
||||
|
||||
# =======================================
|
||||
# === pdf generation ====================
|
||||
# =======================================
|
||||
|
||||
pdf/plan_van_aanpak.pdf: converters/* markdown/plan_van_aanpak.md
|
||||
mkdir -p build/plan_van_aanpak
|
||||
bash converters/mdToLatex.sh markdown/plan_van_aanpak.md
|
||||
|
||||
pdf/pakket_van_eisen.pdf: converters/* markdown/pakket_van_eisen.md
|
||||
mkdir -p build/pakket_van_eisen
|
||||
bash converters/mdToLatex.sh markdown/pakket_van_eisen.md pdf/pakket_van_eisen.pdf
|
||||
|
||||
pdf/detailontwerp_stabilisatie.pdf: converters/* markdown/detailontwerp_stabilisatie.md
|
||||
mkdir -p build/detailontwerp_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/detailontwerp_stabilisatie.md pdf/detailontwerp_stabilisatie.pdf
|
||||
|
||||
pdf/detailontwerp_stuursysteem.pdf: converters/* markdown/detailontwerp_stuursysteem.md
|
||||
mkdir -p build/detailontwerp_stuursysteem
|
||||
bash converters/mdToLatex.sh markdown/detailontwerp_stuursysteem.md pdf/detailontwerp_stuursysteem.pdf
|
||||
|
||||
pdf/unittest_stabilisatie.pdf: converters/* markdown/unittest_stabilisatie.md
|
||||
mkdir -p build/unittest_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/unittest_stabilisatie.md pdf/unittest_stabilisatie.pdf
|
||||
|
||||
# pdf/unittest_stuursysteem.pdf: converters/* markdown/unittest_stuursysteem.md
|
||||
# mkdir -p build/unittest_stuursysteem
|
||||
# bash converters/mdToLatex.sh markdown/unittest_stuursysteem.md pdf/unittest_stuursysteem.pdf
|
||||
|
||||
pdf/softwareontwerp_stabilisatie.pdf: converters/* markdown/softwareontwerp_stabilisatie.md
|
||||
mkdir -p build/softwareontwerp_stabilisatie
|
||||
bash converters/mdToLatex.sh markdown/softwareontwerp_stabilisatie.md pdf/softwareontwerp_stabilisatie.pdf
|
||||
|
||||
pdf/projectdocument.pdf: converters/* markdown/projectdocument.md
|
||||
mkdir -p build/projectdocument
|
||||
bash converters/mdToLatex.sh markdown/projectdocument.md pdf/projectdocument.pdf
|
||||
|
||||
pdf/competenties.pdf: converters/* markdown/competenties.md
|
||||
mkdir -p build/competenties
|
||||
bash converters/mdToLatex.sh markdown/competenties.md pdf/competenties.pdf
|
||||
|
||||
pdf/foc_onderzoek.pdf: converters/* markdown/foc_onderzoek.md
|
||||
mkdir -p build/foc_onderzoek
|
||||
bash converters/mdToLatex.sh markdown/foc_onderzoek.md pdf/foc_onderzoek.pdf
|
||||
|
||||
# =======================================
|
||||
# === booklet generation ================
|
||||
# =======================================
|
||||
pdf/plan_van_aanpak.pdf: latex/plan_van_aanpak.latex
|
||||
cd build/plan_van_aanpak && xelatex ../../latex/plan_van_aanpak.latex
|
||||
cd build/plan_van_aanpak && xelatex ../../latex/plan_van_aanpak.latex
|
||||
cd build/plan_van_aanpak && xelatex ../../latex/plan_van_aanpak.latex
|
||||
mv build/plan_van_aanpak/plan_van_aanpak.pdf pdf/plan_van_aanpak.pdf
|
||||
|
||||
pdf/plan_van_aanpak.booklet.pdf: converters/bookletify.latex pdf/plan_van_aanpak.pdf
|
||||
mkdir -p build/plan_van_aanpak.booklet
|
||||
@ -113,41 +111,59 @@ pdf/plan_van_aanpak.booklet.pdf: converters/bookletify.latex pdf/plan_van_aanpak
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/plan_van_aanpak.booklet" "build/plan_van_aanpak.booklet/bookletify.latex"
|
||||
mv build/plan_van_aanpak.booklet/bookletify.pdf pdf/plan_van_aanpak.booklet.pdf
|
||||
|
||||
pdf/pakket_van_eisen.pdf: latex/pakket_van_eisen.latex
|
||||
cd build/pakket_van_eisen && xelatex ../../latex/pakket_van_eisen.latex
|
||||
cd build/pakket_van_eisen && xelatex ../../latex/pakket_van_eisen.latex
|
||||
cd build/pakket_van_eisen && xelatex ../../latex/pakket_van_eisen.latex
|
||||
mv build/pakket_van_eisen/pakket_van_eisen.pdf pdf/pakket_van_eisen.pdf
|
||||
|
||||
pdf/pakket_van_eisen.booklet.pdf: converters/bookletify.latex pdf/pakket_van_eisen.pdf
|
||||
mkdir -p build/pakket_van_eisen.booklet
|
||||
sed -e 's|?pdf?|../../pdf/pakket_van_eisen.pdf|' converters/bookletify.latex >build/pakket_van_eisen.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/pakket_van_eisen.booklet" "build/pakket_van_eisen.booklet/bookletify.latex"
|
||||
mv build/pakket_van_eisen.booklet/bookletify.pdf pdf/pakket_van_eisen.booklet.pdf
|
||||
|
||||
pdf/detailontwerp_stabilisatie.pdf: latex/detailontwerp_stabilisatie.latex
|
||||
cd build/detailontwerp_stabilisatie && xelatex ../../latex/detailontwerp_stabilisatie.latex
|
||||
cd build/detailontwerp_stabilisatie && xelatex ../../latex/detailontwerp_stabilisatie.latex
|
||||
cd build/detailontwerp_stabilisatie && xelatex ../../latex/detailontwerp_stabilisatie.latex
|
||||
mv build/detailontwerp_stabilisatie/detailontwerp_stabilisatie.pdf pdf/detailontwerp_stabilisatie.pdf
|
||||
|
||||
pdf/detailontwerp_stabilisatie.booklet.pdf: converters/bookletify.latex pdf/detailontwerp_stabilisatie.pdf
|
||||
mkdir -p build/detailontwerp_stabilisatie.booklet
|
||||
sed -e 's|?pdf?|../../pdf/detailontwerp_stabilisatie.pdf|' converters/bookletify.latex >build/detailontwerp_stabilisatie.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/detailontwerp_stabilisatie.booklet" "build/detailontwerp_stabilisatie.booklet/bookletify.latex"
|
||||
mv build/detailontwerp_stabilisatie.booklet/bookletify.pdf pdf/detailontwerp_stabilisatie.booklet.pdf
|
||||
|
||||
pdf/detailontwerp_stuursysteem.pdf: latex/detailontwerp_stuursysteem.latex
|
||||
cd build/detailontwerp_stuursysteem && xelatex ../../latex/detailontwerp_stuursysteem.latex
|
||||
cd build/detailontwerp_stuursysteem && xelatex ../../latex/detailontwerp_stuursysteem.latex
|
||||
cd build/detailontwerp_stuursysteem && xelatex ../../latex/detailontwerp_stuursysteem.latex
|
||||
mv build/detailontwerp_stuursysteem/detailontwerp_stuursysteem.pdf pdf/detailontwerp_stuursysteem.pdf
|
||||
|
||||
pdf/detailontwerp_stuursysteem.booklet.pdf: converters/bookletify.latex pdf/detailontwerp_stuursysteem.pdf
|
||||
mkdir -p build/detailontwerp_stuursysteem.booklet
|
||||
sed -e 's|?pdf?|../../pdf/detailontwerp_stuursysteem.pdf|' converters/bookletify.latex >build/detailontwerp_stuursysteem.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/detailontwerp_stuursysteem.booklet" "build/detailontwerp_stuursysteem.booklet/bookletify.latex"
|
||||
mv build/detailontwerp_stuursysteem.booklet/bookletify.pdf pdf/detailontwerp_stuursysteem.booklet.pdf
|
||||
|
||||
pdf/unittest_stabilisatie.pdf: latex/unittest_stabilisatie.latex
|
||||
cd build/unittest_stabilisatie && xelatex ../../latex/unittest_stabilisatie.latex
|
||||
cd build/unittest_stabilisatie && xelatex ../../latex/unittest_stabilisatie.latex
|
||||
cd build/unittest_stabilisatie && xelatex ../../latex/unittest_stabilisatie.latex
|
||||
mv build/unittest_stabilisatie/unittest_stabilisatie.pdf pdf/unittest_stabilisatie.pdf
|
||||
|
||||
pdf/unittest_stabilisatie.booklet.pdf: converters/bookletify.latex pdf/unittest_stabilisatie.pdf
|
||||
mkdir -p build/unittest_stabilisatie.booklet
|
||||
sed -e 's|?pdf?|../../pdf/unittest_stabilisatie.pdf|' converters/bookletify.latex >build/unittest_stabilisatie.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/unittest_stabilisatie.booklet" "build/unittest_stabilisatie.booklet/bookletify.latex"
|
||||
mv build/unittest_stabilisatie.booklet/bookletify.pdf pdf/unittest_stabilisatie.booklet.pdf
|
||||
|
||||
pdf/competenties.booklet.pdf: converters/bookletify.latex pdf/competenties.pdf
|
||||
mkdir -p build/competenties.booklet
|
||||
sed -e 's|?pdf?|../../pdf/competenties.pdf|' converters/bookletify.latex >build/competenties.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/competenties.booklet" "build/competenties.booklet/bookletify.latex"
|
||||
mv build/competenties.booklet/bookletify.pdf pdf/competenties.booklet.pdf
|
||||
|
||||
pdf/foc_onderzoek.booklet.pdf: converters/bookletify.latex pdf/foc_onderzoek.pdf
|
||||
mkdir -p build/foc_onderzoek.booklet
|
||||
sed -e 's|?pdf?|../../pdf/foc_onderzoek.pdf|' converters/bookletify.latex >build/foc_onderzoek.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/foc_onderzoek.booklet" "build/foc_onderzoek.booklet/bookletify.latex"
|
||||
mv build/foc_onderzoek.booklet/bookletify.pdf pdf/foc_onderzoek.booklet.pdf
|
||||
# pdf/unittest_stuursysteem.pdf: latex/unittest_stuursysteem.latex
|
||||
# cd build/unittest_stuursysteem && xelatex ../../latex/unittest_stuursysteem.latex
|
||||
# cd build/unittest_stuursysteem && xelatex ../../latex/unittest_stuursysteem.latex
|
||||
# cd build/unittest_stuursysteem && xelatex ../../latex/unittest_stuursysteem.latex
|
||||
# mv build/unittest_stuursysteem/unittest_stuursysteem.pdf pdf/unittest_stuursysteem.pdf
|
||||
|
||||
# pdf/unittest_stuursysteem.booklet.pdf: converters/bookletify.latex pdf/unittest_stuursysteem.pdf
|
||||
# mkdir -p build/unittest_stuursysteem.booklet
|
||||
@ -155,26 +171,26 @@ pdf/foc_onderzoek.booklet.pdf: converters/bookletify.latex pdf/foc_onderzoek.pdf
|
||||
# pdflatex -interaction=nonstopmode -output-directory="build/unittest_stuursysteem.booklet" "build/unittest_stuursysteem.booklet/bookletify.latex"
|
||||
# mv build/unittest_stuursysteem.booklet/bookletify.pdf pdf/unittest_stuursysteem.booklet.pdf
|
||||
|
||||
pdf/softwareontwerp_stabilisatie.pdf: latex/softwareontwerp_stabilisatie.latex
|
||||
cd build/softwareontwerp_stabilisatie && xelatex ../../latex/softwareontwerp_stabilisatie.latex
|
||||
cd build/softwareontwerp_stabilisatie && xelatex ../../latex/softwareontwerp_stabilisatie.latex
|
||||
cd build/softwareontwerp_stabilisatie && xelatex ../../latex/softwareontwerp_stabilisatie.latex
|
||||
mv build/softwareontwerp_stabilisatie/softwareontwerp_stabilisatie.pdf pdf/softwareontwerp_stabilisatie.pdf
|
||||
|
||||
pdf/softwareontwerp_stabilisatie.booklet.pdf: converters/bookletify.latex pdf/softwareontwerp_stabilisatie.pdf
|
||||
mkdir -p build/softwareontwerp_stabilisatie.booklet
|
||||
sed -e 's|?pdf?|../../pdf/softwareontwerp_stabilisatie.pdf|' converters/bookletify.latex >build/softwareontwerp_stabilisatie.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/softwareontwerp_stabilisatie.booklet" "build/softwareontwerp_stabilisatie.booklet/bookletify.latex"
|
||||
mv build/softwareontwerp_stabilisatie.booklet/bookletify.pdf pdf/softwareontwerp_stabilisatie.booklet.pdf
|
||||
|
||||
pdf/projectdocument.pdf: latex/projectdocument.latex
|
||||
cd build/projectdocument && xelatex ../../latex/projectdocument.latex
|
||||
cd build/projectdocument && xelatex ../../latex/projectdocument.latex
|
||||
cd build/projectdocument && xelatex ../../latex/projectdocument.latex
|
||||
mv build/projectdocument/projectdocument.pdf pdf/projectdocument.pdf
|
||||
|
||||
pdf/projectdocument.booklet.pdf: converters/bookletify.latex pdf/projectdocument.pdf
|
||||
mkdir -p build/projectdocument.booklet
|
||||
sed -e 's|?pdf?|../../pdf/projectdocument.pdf|' converters/bookletify.latex >build/projectdocument.booklet/bookletify.latex
|
||||
pdflatex -interaction=nonstopmode -output-directory="build/projectdocument.booklet" "build/projectdocument.booklet/bookletify.latex"
|
||||
mv build/projectdocument.booklet/bookletify.pdf pdf/projectdocument.booklet.pdf
|
||||
|
||||
# =======================================
|
||||
# === zip generation ====================
|
||||
# =======================================
|
||||
|
||||
package: pdf/projectdocument.pdf pdf/competenties.pdf externe_bijlagen/*
|
||||
test -d build/export && rm -r build/export || echo
|
||||
mkdir -p build/export
|
||||
cp externe_bijlagen/* build/export/
|
||||
cp pdf/projectdocument.pdf build/export/verslag.pdf
|
||||
cp pdf/competenties.pdf build/export/competentie_verantwoording_Finley.pdf
|
||||
cd build/export && zip ../../pdf/spc_documentatie.zip *
|
||||
|
||||
@ -1,64 +1,47 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
id: srDK71ryTui4ulsUVqWN5A
|
||||
path: /elektro/hr/pee51_spc/competentieVerandwoording
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Competentie verantwoording
|
||||
|
||||
## Analyseren (8)
|
||||
|
||||
Hoofdstuk 3 van `verslag.pdf` wordt uitgelegd hoe de analyse is gedaan. Ik heb in deze fase de voortouw genomen en het PVE gemaakt en beheerd.
|
||||
Aan het begin hebben we goed gekeken naar eisen die er waren voor de vorige groep. Hierna hebben we samen met de opdrachtgever gezeten om te kijken wat de verschillen zijn voor dit jaar. Op basis van deze vergadering, en de eisen van de vorige groep, had ik het eerste concept voor het PvE gemaakt. Dit Het format dat ik het had gemaakt waardeerde de Automotive mensen onder ons niet, ze vonden het niet overzichtelijk. Die moesten het in een MS Exel doen vanuit hun opleiding, maar daar waren wij van Elektrotechniek het niet mee eens. Het is lastig om onderbowing van de eisen er bij te zetten en om er een ondertekenbaar en niet-bewerkbaar bestand van de maken (een PDF). Uieidelijk heb ik mijn format aangehouden en heeft uit mijn hoofd Chris deze vertaalt naar een Exel bestand.
|
||||
|
||||
Daarnaast heb ik ook geanalyseerd voor de stabilisatie unit zelf (hoofdstuk 6 in `verslag.pdf`; of 8.3.2 voor een uitgebreidere variant). Hier heb ik samen met Tijn de motor keuze gemaakt, en alle berekeningen over de motor heb ik zelf gedaan.
|
||||
Het eerste conept dat ik had gamaakt hebben we samen wat aangevult en verbeterd en vervolgens hetzelfde met de opdrachtgever.
|
||||
|
||||
Ook heb ik de analyse gedaan voor wat nodig is voor mijn unit, de motordriver voor de stabalisatie.
|
||||
|
||||
## Ontwerpen (8)
|
||||
|
||||
Het was eerst de bedoeling dat ik samen met Gryvon het ontwerp voor de
|
||||
motordriver te maken, maar die is gestopt met het project voor dat er aan
|
||||
begonnen is. Dus ik heb het ontwerp alleen gedaan. Chirs, de enige andere van
|
||||
elektrotechniek, heeft niet veel ervaring van het ontwerpen van motordrivers,
|
||||
dus ik dacht dat het uitleggen hoe het moet meer tijd kost dan het zelf doen.
|
||||
Het was eerst de bedoeling dat ik samen met Gryvon het ontwerp voor de motrodriver te maken, maar die is gestopt met het project voor dat er aan begonnen is. Dus ik heb het ontwerp alleen gedaan. Chirs, de enige andere van elektrotechniek, heeft niet veel ervaring van het ontwerpen van motordrivers, dus ik dacht dat het uitleggen hoe het moet meer tijd kost dan het zelf doen.
|
||||
|
||||
zie hoofdstuk 6 van `verslag.pdf` of 8.3 voor het detailontwerp.
|
||||
## Realiseren (6)
|
||||
|
||||
## Realiseren (O)
|
||||
De motordriver heb ik gesoldeerd in het SMD lab op Accademiplein, en getest eerst op Accademiplein voor te tesen of de hardware werkt en later op het RDM met een motor aangesloten de software en intergratie te testen.
|
||||
|
||||
De motordriver heb ik gesoldeerd in het SMD lab op Accademiplein, en getest
|
||||
eerst op Accademiplein voor te testen of de hardware werkt en later op het RDM
|
||||
met een motor aangesloten de software en integratie te testen. deze testen zijn nog niet gedocumenteerd.
|
||||
## Beheren (6)
|
||||
|
||||
## Beheren (O)
|
||||
Het detailontwerp heb ik geschreven, ook heb ik een resource map gemaakt die in software gebruikt kan worden dat beschrijft wat er op welke pin is aangesloten.
|
||||
|
||||
Zowel documentatie als de software is gebruikt gemaakt van git voor versiebeheer. Deze zet ik standaard pas openbaar als het project is afgerond.
|
||||
|
||||
> [!todo]
|
||||
> software ontwerp en test rapport moeten verder gemaakt worden.
|
||||
De Software is om moment van schrijven nog niet af, hier wordt nog verder aangewerkent komende weeken. Hier wordt ook documentatie voor geschreven.
|
||||
|
||||
## Managen (6)
|
||||
|
||||
Elke week hebben we op donderdag gewerkt en vergaderd op het RDM. Hier hielden
|
||||
we eiders voortgang updates, en er werd ook regelmatig samen na gedacht over de
|
||||
uitdagingen waar tegengelopen werd.
|
||||
Eleke week hebben we op donderdag gewerkt en vergaderd op het RDM. Hier hielden we eiders voordgang uptodate, en werdt ook regelmatig samen na gedacht over de uitdagingen waar tegenaangelopen werdt.
|
||||
|
||||
## Adviseren (O)
|
||||
## Adviseren (6)
|
||||
|
||||
> [!todo]
|
||||
> moet nog geschreven worden
|
||||
Adviesen zoals wat voor accu of motor er nodig is voor de stabilisatie is gegeven in het detaiontwerp. Er komt nog een advies over hoe de test omstelling ingezet kan worden in het voertuig, dit is nog niet gegeven om dat ik hier nog acctief aan werkt en dus nog niet weet wat er exact nodig is om dit te doen.
|
||||
|
||||
## Onderzoeken (O)
|
||||
## Onderzoeken (6)
|
||||
|
||||
> [!todo]
|
||||
> moet nog geschreven worden
|
||||
ik heb onderzocht hoe de meeste kracht uit een BLDC motor gehaaldt kan worden. Dit kwam heel snel neer op hoe FOC werkt, en hoe dit het best hier geimplementeerd kan worden.
|
||||
|
||||
## professionaliseren (6)
|
||||
|
||||
Er is elke week een presentatie gehouden voor de opdrachtgever en Automotive
|
||||
docenten.
|
||||
Er is elke week een presentatie gehouden voor de opdrachtgever en Automotive docenten.
|
||||
|
||||
@ -1,62 +1,24 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
toc: true
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Detailontwerp Stabilisatie
|
||||
|
||||
[toc]
|
||||
|
||||
## Inleiding
|
||||
|
||||
De SPC^[Superlight Personal Carrier] is een twee wielig concept eenpersoons
|
||||
voertuig. Zonder actieve stabilisatie gaat deze omvallen, hiervoor is een
|
||||
reactie wiel ontworpen. Het aansturen van de motor voor dit wiel is lastig, de
|
||||
volledige kracht moet gehaald worden vanaf stilstand. Dit is alleen mogelijk met
|
||||
FOC^[Field oriented Controll].
|
||||
De SPC^[Superlight Personal Carrier] is een twee wielig concept eenpersoons voertuig. Zonder actieve stabilisatie gaat deze omvallen, hiervoor is een reactie wiel ontworpen. Het aansturen van de motor voor dit wiel is lastig, de volledige kracht moet gehaald worden vanaf stilstand. Dit is alleen mogelijk met FOC^[Field oriented Controll]. Er zijn niet veel motor driver op de markt voor het vermogen (4,5 KW, 45 Nm), hierom is er een op maat gemaakte motor driver ontworpen.
|
||||
|
||||
## Analyse
|
||||
|
||||
Er zijn nog veel onbekenden over het voertuig. De belangrijkste parameters die
|
||||
nodig zijn om de stabilisatie te ontwerpen is het totaal gewicht van het
|
||||
voertuig en waar het midden van de massa is. Deze parameters kan je alleen maar
|
||||
weten als het voertuig af is of exact bekent is wat en waar alles in het
|
||||
voertuig komt. Dit weten we nog niet, om deze inschatting te maken hebben de
|
||||
automotive studenten een inschatting gemaakt. Deze inschatting is gemaakt op
|
||||
basis de het huidige frame, hiervoor zijn is het voertuig gewogen en de hoogte
|
||||
van midden punt van de massa gemeten. En inschattingen van wat er
|
||||
nog in het voertuig moet komen.
|
||||
|
||||
Met deze inschattingen is berekent door Tijn zwaar, de benodigde kracht en
|
||||
snelheid om de eisen te halen. Hieruit kwam een reactiewiel van $10 Kg$ en
|
||||
$45 Nm$ op een maximumsnelheid van $1000 rpm$ gehaalt moet kunnen worden.
|
||||
Dit komt neer op $4.5 kW$ meganishce vermogen.
|
||||
Tijn Stijders (student Automotive engineer) heeft de benodigde kracht van $45 Nm$ op een maximumsnelheid van $1000 rpm$, dit is $4.5 kW$ berekent voor dit voertuig. Deze berekening is gebaseerd op inschattingen van het gewicht van het voertuig, maar is nauwkeurig genoeg om te gebruiken.
|
||||
|
||||
### Motor Keuze
|
||||
|
||||
Het is voor ons niet toegestaan om boven de $50 V$ te testen op de RDM wegens
|
||||
veiligheid. Er zijn erg weinig motoren beschikbaar die onder deze spanning aan
|
||||
de eisen voldoet. Hierom wordt het ontwerp voor een hogere spanning ontworpen en
|
||||
niet op volledig vermogen getest.
|
||||
Het is voor ons niet toegestaan om boven de $50 V$ te testen op de RDM wegens veiligheid. Er zijn erg weinig motoren beschikbaar die onder deze spanning aan de eisen voldoet. Hierom wordt er niet op volledig vermogen getest in dit project, om meer keuze vrijheid te krijgen voor een geschikte motor.
|
||||
|
||||
De volgende motor is gekozen:
|
||||
|
||||
@ -115,14 +77,11 @@ De gegeven specificatie zijn:
|
||||
| 23 | 43.33 | 56.41 | 2444 | 2357 | 8.13 | 2006 | 82.1 | 68 |
|
||||
| 24 | 42.99 | 60.35 | 2594 | 2294 | 8.77 | 2108 | 81.3 | 71 |
|
||||
|
||||
Er missen wat gegevens om verder te kunnen. De hoeveelheid stroom bij krachten
|
||||
groter dan $8.77 Nm$ en hoelang de piek kracht volgehouden kan worden.
|
||||
Er missen wat gegevens om verder te kunnen. De hoeveelheid stroom bij krachten groter dan $8.77 Nm$ en hoelang de piek kracht volgehouden kan worden.
|
||||
|
||||
### koppel constante
|
||||
|
||||
Om de stroom bij grotere krachten te berekenen is de koppel constante nodig.
|
||||
Dit is de hoeveelheid koppel die per Ampère levert. In dit geval kan deze
|
||||
berekend worden met de volgende formule.
|
||||
Om de stroom bij grotere krachten te berekenen is de koppel constante nodig. Dit is de hoeveelheid koppel die per Ampère levert. In dit geval kan deze berekend worden met de volgende formule.
|
||||
|
||||
$$
|
||||
K_T = \frac{\tau}{I-I_{noload}}
|
||||
@ -234,7 +193,7 @@ $$
|
||||
|
||||
Met een 1:4 gearbox kan een maximale snelheid van 875 rpm halen (de motor kan maximaal 3500 rpm draaien). Dit is iets onder de eisen, maar een betere motor hebben wij niet gevonden voor een redelijke prijs.
|
||||
|
||||
voor $3500rpm$ met $11.3 Nm$ is een spanning nodig van $71.3V$.
|
||||
voor $3500rpm$ met $11.3 Nm$ is een spanning nodig van $64V$.
|
||||
|
||||
> Er is zat een grote fout in eerdere berekeningen. Terug regekent was dat voor 25 Nm i.p.v. 45 Nm. Dan is er maar ongeveer 45 A met de 1:4 gearbox nodig. De motor driver is dus ontworpen voor 50 A (inclusief een marge) i.p.v. de 80 A die het eigenlijk had moeten zijn. Volgende keer de berekeningen beter controleren.
|
||||
> Verder in dit document zal de $50 A$ gebruik worden
|
||||
@ -242,66 +201,27 @@ voor $3500rpm$ met $11.3 Nm$ is een spanning nodig van $71.3V$.
|
||||
### Specificaties
|
||||
|
||||
- De drijver moet minimaal $72 V$ aan kunnen, met voorkeur van $120 V$ [^1]
|
||||
- de drijver moet minimaal $50 A$ continu kunnen leveren [^1]
|
||||
- maakt gebruik van Field Orented Controll, om het volledige vermogen te kunnen
|
||||
halen vanaf stilstand.
|
||||
- de drijver moet minimaal $50 A$ continu kunnen leveren (wat eigenlijk $80 A$ had moeten zijn) [^1]
|
||||
- maakt gebruik van Field Orented Controll, om het volledige vermogen te kunnen halen vanaf stilstand.
|
||||
- De hoek van het voertuig moet gemeten worden.
|
||||
- Er is een regel loop tussen de hoek sensor en de kracht van de motor.
|
||||
- Er is een SPI-client connector waarmee verschillende instellingen ingesteld
|
||||
mee kan worden, waaronder het maximaal vermogen.
|
||||
- Er is een mogenlijkheid om later de SPI-client te kunnen vervangen met een
|
||||
CAN-bus.
|
||||
- Er is een SPI-client connector waarmee verschillende instellingen ingesteld mee kan worden, waaronder het maximaal vermogen.
|
||||
|
||||
CAN-bus is de sandaart communicatie potocol in autos, maar er is gekozen om dit
|
||||
protocool nog niet te implementeeren, wegens de complexitijd van dit protocool.
|
||||
|
||||
[^1]: Er wordt tot $50 V$ getest, deze waardes word het voor ontworpen, maar
|
||||
niet tot de limiet getest.
|
||||
[^1]: Er wordt tot $50 V$ getest, deze waardes word het voor ontworpen, maar niet tot de limiet getest.
|
||||
|
||||
## Ontwerp
|
||||
|
||||
Motordrivers die dit vermogen aan kunnen en FOC ontersteunen zijn erg schaarst,
|
||||
op de markt. We hebben geen driver kunnen vinden die niet op maat gemaakt wordt.
|
||||
Zelf een maken is goedkoper, aangezien er geen certificeertingen gedaan hoeven
|
||||
worden en geen abrijds kosten hoeven te rekenen voor onszelf.
|
||||
|
||||
Daarbij heeft het team ook al ervaring. Finley heeft al een motor driver
|
||||
ontworpen op haar stage. Dat was ook een grote factor in het maken van deze
|
||||
keuze.
|
||||
|
||||
### Componenten
|
||||
|
||||
Een FOC BLDC motor driver bestaat minimaal uit drie half driver en een
|
||||
controller voor de FOC. Eleke halfbridge driver bestaat uit twee transistoren
|
||||
en een gate driver.
|
||||
#### FET's
|
||||
|
||||
#### Transistoren
|
||||
MOSFET's was de eerste waar naar gezocht is. Van bijna alle FET's is de maximale stroom in de datasheet is niet realistisch haalbaar, dit vereist veel koeling dat erg lastig is te realiseren. Dit maakt het vinden van een geschikte MOSFET lastig, de meeste kunnen het niet aan alleen. Het is mogelijk om meerde parallel te zetten, maar dit vereist goede thermisch beheer.
|
||||
|
||||
Tyristoren werken niet, omdat de voeding direct van een accu komt dus geen 'zero
|
||||
crossing' om ze uit te zetten. BJT's zijn niet bepaalt geschikt voor grote
|
||||
stromen. De stroom is zelf erg hoog voor FET's, maar dat is eigenlijk onze enige
|
||||
optie.
|
||||
|
||||
MOSFET's was de eerste waar naar gezocht is. Van bijna alle FET's is de maximale
|
||||
stroom in de datasheet is niet realistisch haalbaar, dit vereist veel koeling
|
||||
dat erg lastig is te realiseren. Dit maakt het vinden van een geschikte MOSFET
|
||||
lastig, de meeste kunnen het niet aan alleen. Het is mogelijk om meerde parallel
|
||||
te zetten, maar dit vereist goede thermisch beheer.
|
||||
|
||||
Een andere optie is GaNFET's, hier hebben we een fabrikant (Efficiënt Power
|
||||
Converters; EPC) gevonden die veel redelijkere maximale stroom geven. De
|
||||
EPC3207^[[https://epc-co.com/epc/products/gan-fets-and-ics/epc2307](https://epc-co.com/epc/products/gan-fets-and-ics/epc2307)]
|
||||
lijkt met meest geschikt voor dit project. Deze kan $62A$ aan volgens de
|
||||
datasheet, en verliest ongeveer $15W$ bij $50A$. Dit vermogen is goed te koelen
|
||||
met een koelblok.
|
||||
Een andere optie is GaNFET's, hier hebben we een fabrikant (Efficiënt Power Converters; EPC) gevonden die veel redelijkere maximale stroom geven. De EPC3207^[[https://epc-co.com/epc/products/gan-fets-and-ics/epc2307](https://epc-co.com/epc/products/gan-fets-and-ics/epc2307)] lijkt met meest geschikt voor dit project. Deze kan $62A$ aan volgens de datasheet, en verliest ongeveer $15W$ bij $50A$. Dit vermogen is goed te koelen met een koelblok.
|
||||
|
||||
#### Gate Driver
|
||||
|
||||
EPC geeft een lijst aan aangeraden gate drivers
|
||||
IC's^[[https://epc-co.com/epc/design-support/gan-first-time-right/drivers-and-controllers](https://epc-co.com/epc/design-support/gan-first-time-right/drivers-and-controllers)].
|
||||
Er is gekozen voor de NCP51820 van On-Semi uit deze lijst. Deze kan hoge
|
||||
spanningen aan, de schakeling er om heen is makkelijk te maken door een aparte
|
||||
source en sync pinnen, en is goed verkrijgbaar voor een goede prijs.
|
||||
EPC geeft een lijst aan aangeraden gate drivers IC's^[[https://epc-co.com/epc/design-support/gan-first-time-right/drivers-and-controllers](https://epc-co.com/epc/design-support/gan-first-time-right/drivers-and-controllers)]. Er is gekozen voor de NCP51820 van On-Semi uit deze lijst. Deze kan hoge spanningen aan, de schakeling er om heen is makkelijk te maken door een aparte source en sync pinnen, en is goed verkrijgbaar voor een goede prijs.
|
||||
|
||||
##### Verliezen in de FET
|
||||
|
||||
@ -334,13 +254,11 @@ Als je dit invult:
|
||||
|
||||
$U = 120V$, $I = 50A$, $t = 4 ns$, $f_s = 50 kHz$ dan is $P_{loss,sw} = 1.2 W$.
|
||||
|
||||
Dit geeft een totaal van $P_{loss} = 16.2W$. Dit is berekent met een ruime
|
||||
schakelverlies met bijna $100\%$ PWM. De werkelijkheid zal het minder zijn.
|
||||
Dit geeft een totaal van $P_{loss} = 16.2W$. Dit is berekent met een ruime schakelverlies met bijna $100\%$ PWM. De werkelijkheid zal het minder zijn.
|
||||
|
||||
#### Stroom Meting
|
||||
|
||||
Heel eerlijk, deze was ik een beetje vergeten, dus heb snel de ACS724
|
||||
toegevoegd. Nu hopen dat die de piek stromen aan kan.
|
||||
Heel eerlijk, deze was ik een beetje vergeten, dus heb snel de ACS724 toegevoegd. Nu hopen dat die de piek stromen aan kan.
|
||||
|
||||
#### Hoek Sensor
|
||||
|
||||
@ -348,68 +266,39 @@ Het meten van de hoek hebben we drie manieren voor gevonden:
|
||||
|
||||
- afstand sensoren naar de grond
|
||||
|
||||
Als de grond wat scheef is zal het reactiewiel het voertuig scheef (ten opzichte
|
||||
van zwaartekracht), waardoor het wiel steeds sneller gaat draaien tot die de
|
||||
maximale snelheid bereikt, dan valt het voertuig om. Niet heel handig dus.
|
||||
Als de grond wat scheef is zal het reactiewiel het voertuig scheef (ten opzichte van zwaartekracht), waardoor het wiel steeds sneller gaat draaien tot die de maximale snelheid bereikt, dan valt het voertuig om. Niet heel handig dus.
|
||||
|
||||
- MEMS-Gyroscoop
|
||||
|
||||
Meet direct de hoek en is snel. Nadeel is als deze afwijkt veranderd de nul
|
||||
positie en gaat die balanceren op het verkeerde punt.
|
||||
Meet direct de hoek en is snel. Nadeel is als deze afwijkt veranderd de nul positie en gaat die balanceren op het verkeerde punt.
|
||||
|
||||
- MEMS-Versnellingsmeter
|
||||
|
||||
Meet de zwaartekracht direct, dus verliest de nul positie niet, maar wordt
|
||||
verstoord bij een stoot.
|
||||
Meet de zwaartekracht direct, dus verliest de nul positie niet, maar wordt verstoord bij een stoot.
|
||||
|
||||
De beste optie is een combinatie van een MEMS-gyroscoop en een
|
||||
MEMS-versnellingsmeter. De versnellingsmeter zorgt er voor dat de nul positie
|
||||
niet verloren gaat. En de gyroscoop voor nauwkeurige meting van de hoek. Deze
|
||||
combinatie wordt ook een IMU (Inertial measurement unit) genoemd.
|
||||
De beste optie is een combinatie van een MEMS-gyroscoop en een MEMS-versnellingsmeter. De versnellingsmeter zorgt er voor dat de nul positie niet verloren gaat. En de gyroscoop voor nauwkeurige meting van de hoek. Deze combinatie wordt ook een IMU (Inertial measurement unit) genoemd.
|
||||
|
||||
Uiteindelijk is de M5Stack IMU Pro Mini gekozen, dit is een module in behuizing
|
||||
met een connector. Dit is erg handig, omdat deze goed schokvrij bevestigt moet
|
||||
worden. Er zit ook nog een kompas en luchtdruk sensor op, maar er zijn geen
|
||||
plannen om deze te gebruiken.
|
||||
Uiteindelijk is de M5Stack IMU Pro Mini gekozen, dit is een module in behuizing met een connector. Dit is erg handig, omdat deze goed schokvrij bevestigt moet worden. Er zit ook nog een kompas en luchtdruk sensor op, maar er zijn geen plannen om deze te gebruiken.
|
||||
|
||||
In deze module zit de
|
||||
BMI270^[[https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi270/](https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi270/)]
|
||||
van Bosch. De I^2^C bus van deze IC is direct verbonden met de connector naar
|
||||
buiten toe.
|
||||
In deze module zit de BMI270^[[https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi270/](https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi270/)] van Bosch. De I^2^C bus van deze IC is direct verbonden met de connector naar buiten toe.
|
||||
|
||||
#### Microcontroller
|
||||
|
||||
Er zijn niet veel vereisten voor de microcontroller, bijna alle microcontrollers
|
||||
hebben SPI, I2C interfaces en een ADC voor de stroom meting. Het belangrijkste
|
||||
is dat die genoeg rekenkracht heeft voor de FOC berekeningen.
|
||||
Er zijn niet veel vereisten voor de microcontroller, bijna alle microcontrollers hebben SPI, I2C interfaces en een ADC voor de stroom meting. Het belangrijkste is dat die genoeg rekenkracht heeft voor de FOC berekeningen.
|
||||
|
||||
Uiteindelijk is gekozen voor een RP2040 van Raspberry Pi, deze heeft twee ARM
|
||||
Cortex M0+ cores die tot 150 MHz aan kunnen. Het grote voordeel van deze
|
||||
microcontroller is dat ik al een ontwerp klaar heb liggen met alle benodigde
|
||||
componenten.
|
||||
Uiteindelijk is gekozen voor een RP2040 van Raspberry Pi, deze heeft twee ARM Cortex M0+ cores die tot 150 MHz aan kunnen. Het grote voordeel van deze microcontroller is dat ik al een ontwerp klaar heb liggen met alle benodigde componenten.
|
||||
|
||||
#### Encoder
|
||||
|
||||
Voor FOC moet de positie van polen (magneten) in de rotor ten opzichte van de
|
||||
slots (elektro magneten) in de rotor. Hoe nauwkeuriger dit is hoe effectiever
|
||||
de FOC is om met maximale vermogen uit de motor te kunnen halen.
|
||||
Voor FOC moet de positie van polen (magneten) in de rotor ten opzichte van de slots (elektro magneten) in de rotor. Hoe nauwkeuriger dit is hoe effectiever de FOC is om met maximale vermogen uit de motor te kunnen halen.
|
||||
|
||||
Veel motoren worden geleverd met drie hall-effect sensoren die deze relatieve
|
||||
positie direct meten, allen zijn deze niet heel nauwkeurig op lage snelheden.
|
||||
Veel motoren worden geleverd met drie hall-effect sensoren die deze relatieve positie direct meten, allen zijn deze niet heel nauwkeurig op lage snelheden.
|
||||
|
||||
Een Relatieve rotary encoder, zoals een optische die sloten telt in een schrijf
|
||||
die gemonteerd is aan de rotor, kan veel nauwkeuriger. Het nadeel is dat deze
|
||||
gekalibreerd moet worden elke keer als de stroom er afgaat.
|
||||
Een Relatieve rotary encoder, zoals een optische die sloten telt in een schrijf die gemonteerd is aan de rotor, kan veel nauwkeuriger. Het nadeel is dat deze gekalibreerd moet worden elke keer als de stroom er afgaat.
|
||||
|
||||
Een absolute rotary encoder hoeft maar 1 keer gekalibreerd te worden. De meeste.
|
||||
Er zijn twee soorten absolute encoders die veel gebruikt worden, een die om een
|
||||
as gemonteerd worden (zoals de
|
||||
AMT212B-V^[[https://www.sameskydevices.com/product/motion-and-control/rotary-encoders/absolute/modular/amt212b-v](https://www.sameskydevices.com/product/motion-and-control/rotary-encoders/absolute/modular/amt212b-v)])
|
||||
of een die de oriëntatie van een magneet meet (zoals de
|
||||
AS5600^[[https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor](https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor)]).
|
||||
Een absolute rotary encoder hoeft maar 1 keer gekalibreerd te worden. De meeste. Er zijn twee soorten absolute encoders die veel gebruikt worden, een die om een as gemonteerd worden (zoals de AMT212B-V^[[https://www.sameskydevices.com/product/motion-and-control/rotary-encoders/absolute/modular/amt212b-v](https://www.sameskydevices.com/product/motion-and-control/rotary-encoders/absolute/modular/amt212b-v)]) of een die de oriëntatie van een magneet meet (zoals de AS5600^[[https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor](https://ams-osram.com/products/sensor-solutions/position-sensors/ams-as5600-position-sensor)]).
|
||||
|
||||
Er is gekozen voor een breakout board te kopen van de AS5600, deze is het
|
||||
makkelijkst de monteren en goed verkrijgbaar van de absolute encoders.
|
||||
Er is gekozen voor een breakout board te kopen van de AS5600, deze is het makkelijkst de monteren en goed verkrijgbaar van de absolute encoders.
|
||||
|
||||
### Schema
|
||||
|
||||
@ -417,65 +306,35 @@ Het schema is gemaakt in KiCad
|
||||
|
||||
#### Half-bridge
|
||||
|
||||
Voor een BLDC-motor driver zijn drie half-bridges nodig. Bij een ontwerp van een
|
||||
half bridge zijn twee belangrijke dingen, naast component keuze. De gate driver
|
||||
en de power filtering.
|
||||
Voor een BLDC-motor driver zijn drie half-bridges nodig. Bij een ontwerp van een half bridge zijn twee belangrijke dingen, naast component keuze. De gate driver en de power filtering.
|
||||
|
||||
##### Power Filtering
|
||||
|
||||
In dit ontwerp worden GaNFET's gebruikt, deze schadelijk binnen enkele
|
||||
nanosecondes. Eleke hoeveelheid aan inductie vanaf de voeding vertraagt deze
|
||||
snelheid, en is een antenne voor de honderden MHz dat door deze schakelsnelheid
|
||||
gegenereerd wordt. Er moeten dus condensatoren zo dicht mogelijk bij de FET's om
|
||||
de inductie zo minimaal mogelijk te maken. Deze moeten ook keramische zijn door
|
||||
de lage ESR. Een nadeel is dat deze voor veel motor drijvers eigenlijk te groot
|
||||
zijn waardoor de afstand tussen de condensator en FET's te groot wordt als de
|
||||
filtering in 1 stage gaat.
|
||||
In dit ontwerp worden GaNFET's gebruikt, deze schadelijk binnen enkele nanosecondes. Eleke hoeveelheid aan inductie vanaf de voeding vertraagt deze snelheid, en is een antenne voor de honderden MHz dat door deze schakelsnelheid gegenereerd wordt. Er moeten dus condensatoren zo dicht mogelijk bij de FET's om de inductie zo minimaal mogelijk te maken. Deze moeten ook keramische zijn door de lage ESR. Een nadeel is dat deze voor veel motor drijvers eigenlijk te groot zijn waardoor de afstand tussen de condensator en FET's te groot wordt als de filtering in 1 stage gaat.
|
||||
|
||||
Om te berekenen hoeveel stages nodig zijn, moet eerste de layout gemaakt worden
|
||||
(hier meer over in het hooftstuk PCB). Bij de layout is het geluk om $7.2 \mu F$
|
||||
(5 x $1\mu F$ en 1 x $2.2\mu F$) in de eerste stage te plaatsen.
|
||||
Om te berekenen hoeveel stages nodig zijn, moet eerste de layout gemaakt worden (hier meer over in het hooftstuk PCB). Bij de layout is het geluk om $7.2 \mu F$ (5 x $1\mu F$ en 1 x $2.2\mu F$) in de eerste stage te plaatsen.
|
||||
|
||||
> TODO: ref to hooftstuk pcb needed!
|
||||
|
||||
Na veel experimenteren in een simulatie in LTspice lijkt $7.2\mu F$ wel weinig,
|
||||
het zal een stuk beter zijn als er $20\mu F$ zal passen.
|
||||
Na veel experimenteren in een simulatie in LTspice lijkt $7.2\mu F$ wel weinig, het zal een stuk beter zijn als er $20\mu F$ zal passen.
|
||||
|
||||
De tweede stage is wat klein gehouden, om in inschakelstroom beperkt te houden.
|
||||
Dit betekent wel dat er erg dikke kabels nodig zijn om het volledige vermogen
|
||||
aan te kunnen.
|
||||
De tweede stage is wat klein gehouden, om in inschakelstroom beperkt te houden. Dit betekent wel dat er erg dikke kabels nodig zijn om het volledige vermogen aan te kunnen.
|
||||
|
||||
Helaas is de simulatie gecrasht en het bestand corrupt geraakt. Het is hierna
|
||||
niet meer gelukt om de simulatie stabiel opnieuw op te bouwen (vermogens van
|
||||
honderden KW bij een kleine aanpassing). Onder staat is de schakeling van de
|
||||
opnieuw opgebouwde schakeling die dus niet werkt.
|
||||
Helaas is de simulatie gecrasht en het bestand corrupt geraakt. Het is hierna niet meer gelukt om de simulatie stabiel opnieuw op te bouwen (vermogens van honderden KW bij een kleine aanpassing). Onder staat is de schakeling van de opnieuw opgebouwde schakeling die dus niet werkt.
|
||||
|
||||

|
||||

|
||||
|
||||
In figuur \ref{detil_stab_sim_fet} is C2 zijn de keramische condensatoren vlak bij de FET's (eerste stage), C3 en C1
|
||||
zijn solid polymer aluminum capacitors voor de tweede stage. L4 is een
|
||||
ingeschatte inductie van de verbinding tussen de condensatoren en L5 is de
|
||||
inductie van de kabels vanaf de accu.
|
||||
C2 zijn de keramische condensatoren vlak bij de FET's (eerste stage), C3 en C1 zijn solid polymer aluminum capacitors voor de tweede stage. L4 is een ingeschatte inductie van de verbinding tussen de condensatoren en L5 is de inductie van de kabels vanaf de accu.
|
||||
|
||||
De condensator waardes zijn een stuk groter dan op het evaluatiebord. Hier
|
||||
zitten 7 condensatoren van $22nF$ op ($125nF$ totaal). Ik vermoed dat mijn
|
||||
simulaties wat pessimistischer zijn dat de werkelijkheid.
|
||||
De condensator waardes zijn een stuk groter dan op het evaluatiebord. Hier zitten 7 condensatoren van $22nF$ op ($125nF$ totaal). Ik vermoed dat mijn simulaties wat pessimistischer zijn dat de werkelijkheid.
|
||||
|
||||
##### Gate Driver
|
||||
|
||||
Het simulatiemodel van de gate driver IC is alleen beschikbaar voor Simplus. Het
|
||||
is mij niet gelukt om de gratis versie van deze software werkend te krijgen of
|
||||
het model te converteren naar een ander format. Dus het berekenen of simuleren
|
||||
voor gate driver gaat niet lukken. Dus ik heb een referentieontwerp van EPC
|
||||
overgenomen met een $0\Omega$ weerstand bij de sync (hier is wel een $0\Omega$
|
||||
jumper gebruikt zodat die later vervangen kan worden met een weerstand) en
|
||||
$0.39\Omega$ voor de source.
|
||||
Het simulatiemodel van de gate driver IC is alleen beschikbaar voor Simplus. Het is mij niet gelukt om de gratis versie van deze software werkend te krijgen of het model te converteren naar een ander format. Dus het berekenen of simuleren voor gate driver gaat niet lukken. Dus ik heb een referentieontwerp van EPC overgenomen met een $0\Omega$ weerstand bij de sync (hier is wel een $0\Omega$ jumper gebruikt zodat die later vervangen kan worden met een weerstand) en $0.39\Omega$ voor de source.
|
||||
|
||||
#### Microcontroller
|
||||
|
||||
De microcontroller schakeling is een kopie van een hobby project, deze
|
||||
schakeling is al getest. Er is niks veranderd aan dit ontwerp voor dit project,
|
||||
behalve dat er andere io pinnen gebruikt worden.
|
||||
De microcontroller schakeling is een kopie van een hobby project, deze schakeling is al getest. Er is niks veranderd aan dit ontwerp voor dit project, behalve dat er andere io pinnen gebruikt worden.
|
||||
|
||||
### PCB
|
||||
|
||||
@ -484,53 +343,31 @@ behalve dat er andere io pinnen gebruikt worden.
|
||||
Vijftig ampère is erg veel voor een PCB.
|
||||
|
||||
> KiCad Calculator Tools:
|
||||
> "The calculations are valid for currents up to $35 A$ (external) or $17.5 A$
|
||||
(internal), temperature rises up to $100^\circ C$, and widths of up to 400
|
||||
mils (10mm)"
|
||||
> "The calculations are valid for currents up to $35 A$ (external) or $17.5 A$ (internal), temperature rises up to $100^\circ C$, and widths of up to 400 mils (10mm)"
|
||||
|
||||
Deze tool geeft voor $35A$, $150mm$ spoor lengte en $10^\circ C\Delta$ met
|
||||
$70\mu m$ koper een spoor breedte van $20.2mm$. De spoorbreedte is al buiten het
|
||||
berijk van deze tool. Als we toch de stroom verandert naar $50A$ wordt dit
|
||||
$33.1mm$.
|
||||
Deze tool heeft voor $35A$, $150mm$ spoor lengte en $10^\circ C\Delta$ met $70\mu m$ koper een spoor breedte van $20.2mm$. De spoorbreedte is al buiten het berijk van deze tool. Als we toch de stroom verandert naar $50A$ wordt dit $33.1mm$.
|
||||
|
||||
Met dezelfde instellingen voor $50A$ in de calculator van DigiKey keeft die
|
||||
dezelfde resultatie. En die van AdvancedPCB, PCBWay en OMNI calculator. Of ze
|
||||
gebruiken allemaal dezelfde beperkte formule of het klopt redelijk.
|
||||
Met dezelfde instellingen voor $50A$ in de calculator van DigiKey keeft die dezelfde resultatie. En die van AdvancedPCB, PCBWay en OMNI calculator. Of ze gebruiken allemaal dezelfde beperkte formule of het klopt redelijk.
|
||||
|
||||
Er is gekozen om een spoor breedte van $40mm$ te gebruiken om iets marge te
|
||||
hebben als deze rekenmachines afwijken. Dit is erg breed, dus dit verdeeld gedaan
|
||||
over een buiten laag en een binnen laag plus nog een extra marge omdat
|
||||
binnenlagen minder goed koelen. De lagen zijn om en om gedaan, zodat het beetje
|
||||
capaciteit tussen deze lagen de inductie ietsje compenseert.
|
||||
Er is gekozen om een spoor breedte van $40mm$ te gebruiken om iets marge te hebben als deze rekenmachines afwijken. Dit is erg breed, dus dit verdeeld gedaan over een buiten laag en een binnen laag plus nog een extra marge omdat binnenlagen minder goed koelen. De lagen zijn om en om gedaan, zodat het beetje capaciteit tussen deze lagen de inductie ietsje compenseert.
|
||||
|
||||
#### Half-bridges
|
||||
|
||||
Gelukkig heeft EPC (de fabrikant van de FET's) een aantal aangeraden layouts (figuur \ref{detil_stab_fet_ref}).
|
||||
Gelukkig heeft EPC (de fabrikant van de FET's) een aantal aangeraden layouts.
|
||||
|
||||

|
||||

|
||||
|
||||
Bij dit project worden de high-side (HS) en low-side (LS) FET's ongeveer
|
||||
hetzelfde belast, dus ze hebben dezelfde koeling nodig. Dus er is voor de
|
||||
middelste optie gekozen.
|
||||
Bij dit project worden de high-side (HS) en low-side (LS) FET's ongeveer hetzelfde belast, dus ze hebben dezelfde koeling nodig. Dus er is voor de middelste optie gekozen.
|
||||
|
||||

|
||||

|
||||
|
||||
In figuur \ref{detil_stab_fet_layout} is de layout te zien. De rij condensatoren in het midden tussen de
|
||||
twee FET's (met veel vias er omheen). Rechts daar van de SOIC-8 is de stroom
|
||||
meting IC en rechts onderin de gate driver.
|
||||
|
||||
De uitgang van de FET's voor de stroom meet IC is er ook in de binnen laag
|
||||
direct onder de top laat (de render is van de top laag). Deze zit er om de
|
||||
stroom loop zo'n klein mogelijk oppervlak te geven met de condensatoren, door er
|
||||
onder door te gaan. Hierom stoppen de vias van de voeding ook zo abrupt.
|
||||
Hierboven is de layout te zien. De rij condensatoren in het midden tussen de twee FET's (met veel vias er omheen). Rechts daar van de SOIC-8 is de stroom meting IC en rechts onderin de gate driver.
|
||||
|
||||
De uitgang van de FET's voor de stroom meet IC is er ook in de binnen laag direct onder de top laat (de render is van de top laag). Deze zit er om de stroom loop zo'n klein mogelijk oppervlak te geven met de condensatoren, door er onder door te gaan. Hierom stoppen de vias van de voeding ook zo abrupt.
|
||||
|
||||
## Productie
|
||||
|
||||
De PCB en stencel zijn gepoduceert door JLCPCB en de componenten zijn gelaats en
|
||||
in de reflow oven gegaan in het SMD-lab op Accademiplein.
|
||||
De PCB en stencel zijn gepoduceert door JLCPCB en de componenten zijn gelaats en in de reflow oven gegaan in het SMD-lab op Accademiplein.
|
||||
|
||||
Na dat die uit de over kwam zijn er een aantal soleer balletjes weggehaald, twee
|
||||
soldeer bruggen weg gehaald bij een van de gate driver IC's en de
|
||||
microcontroller opnieuwe met de hand erop gelaast. De microcontroller had teveel
|
||||
tin op de groundpad aan de onderkant, waardoor deze omhoog kwam en de pinnen aan
|
||||
de zijkant boven de PCB zweefde onder contact.
|
||||
Na dat die uit de over kwam zijn er een aantal soleer balletjes weggehaald, twee soldeer bruggen weg gehaald bij een van de gate driver IC's en de microcontroller opnieuwe met de hand erop gelaast. De microcontroller had teveel tin op de groundpad aan de onderkant, waardoor deze omhoog kwam en de pinnen aan de zijkant boven de PCB zweefde onder contact.
|
||||
|
||||
@ -1,50 +1,30 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
|
||||
## Vehicle Control unit
|
||||
|
||||
De VCU is een belangrijk onderdeel van het systeem, hiermee kunnen we het voertuig in een richting sturen en vooruit bewegen, de belangrijkste keuzes hierin zijn in welke taal we willen gaan programmeren en wat voor soort microcontroller we willen. De reden hiervoor is zodat de volgende team makkelijker kan omgaan met de code en het systeem makkelijker kunnen uitbreiden. het makkelijkst is dan om met de Arduino IDE en framework verder te gaan, omdat het een bekent en veel gedocumenteerd systeem is waar je veel over kan vinden op internet tegenover veel andere IDE's, programmeer talen en microcontrollers. verder moet het ook draadloos verbinding kunnen maken met een console controller zodat de volgende teams eventueel een andere keuze kunnen maken hoe ze willen sturen. Daarom hebben we voor de ESP32 gekozen omdat het alles aantikt met een gezond aantal GPIO pinnen.
|
||||
De VCU is een belangrijk onderdeel van het systeem, hiermee kunnen we het voertuig in een richting sturen en vooruit bewegen, de belangrijkste keuzes hierin zijn in welke taal we willen gaan programmeren en wat voor soort microcontroller we willen. De reden hiervoor is zodat de volgende team makkelijker kan omgaan met de code en het systeem makkelijker kunnen uitbreiden. het makkelijkst is dan om met de Arduino IDE en taal verder te gaan, omdat het een bekent en veel gedocumenteerd systeem is waar je veel over kan vinden op internet tegenover veel andere IDE's, programmeer talen en microcontrollers. verder moet het ook draadloos verbinding kunnen maken met een console controller zodat de volgende teams eventueel een andere keuze kunnen maken hoe ze willen sturen. Daarom hebben we voor de ESP32 gekozen omdat het alles aantikt met een gezond aantal GPIO pinnen.
|
||||
|
||||
## Actuator
|
||||
|
||||
De actuator hebben we nodig om de wielen in een richting te kunnen sturen volgens Max Kappert(student automotive engineer) hebben we de volgende parameters gekregen die we nodig hebben om het voertuig te kunnen sturen.
|
||||
|
||||
| Parameter | Waarde | Eenheid | Opmerking |
|
||||
| ------------------------------ | ------------- | ---------- | --------------------------------------------------- |
|
||||
| Voertuigspanning | 12 - 14 | $V_{DC}$ | typisch voor auto-VCU's |
|
||||
|--------------------------------|-------------|------------|----------------------|
|
||||
| Voertuigspanning | 12 - 14 | $V_{DC}$ | typisch voor auto-ECU's |
|
||||
| Stuurspanningdemperkle | 0 - 5 | $V_{DC}$ | naloge regeling |
|
||||
| PWM-signaal frequentie | 25000 - 30000 | $Hz$ | Typische range voor aansturing |
|
||||
| PWM duty cycle | 10 - 90 | $\%$ | $0\%$: minimale demping, $90\%$: maximale demping * |
|
||||
| PWM-signaal frequentie | 1000 - 3000 | $Hz$ | Typische range voor aansturing |
|
||||
| PWM duty cycle | 10 - 90 | $\%$ | $0%$: minimale demping, $90%$: maximale demping |
|
||||
| Stroomverbruik klep | 0.5 - 2 | $A$ | Afhankelijk van de interne weerstand |
|
||||
| Wielsnelheid | 0 - 250 | $km/h$ | Meet snelheid per wiel |
|
||||
| Karrosserieversnelling | -3 tot +3 | $g$ | Laterale en verticale versnellingen |
|
||||
| Axiale potentiometer (veerweg) | 0 - 50 | $mm$ | Meet veeruitslag |
|
||||
| Temperatuur werkbereik | -40 tot +85 | $^\circ C$ | Automobielstandaard |
|
||||
|
||||
*demping voor de ophanging
|
||||
|
||||
Voor de Actuator is er een keuze gemaakt voor CDC (Continuous Damping Control) demper van SACHS, Maar vanwege de besteltijden van dit soort componenten kunnen we dit niet gebruiken. Daarom gebruiken we een actuator die er al staat, de A0-01/M van S-LINE. om de actuator te besturen gebruiken we een motordriver, de MDD20A. Dit is omdat we het al hebben en werkt met de huidige actuatoren en voldoende de parameters van de actuatoren behaald, daarom hebben we besloten om niet een nieuwe te kopen of te ontwerpen. Om ervoor te zorgen dat de actuatoren niet te ver gaan gebruiken we de AS5600 magnetic encoder. Dit is omdat de encoder een absoluut positie meegeeft en daarom voor minder problemen zorgt als het voertuig opnieuw opstart.
|
||||
|
||||
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
---
|
||||
|
||||
*[BLDC]: Brushless Direct Current motor
|
||||
*[SPC]: Superlight Personal Carrier
|
||||
|
||||
# Onderzoek Efficentie BLDC
|
||||
|
||||
## Inleiding
|
||||
|
||||
Voor de stabilisatie van de SPC is gekozen om dit te doen met een reactiewiel.
|
||||
Hiervoor is het nodig dat de volledige kracht geleverd kan worden vanaf stilstand.
|
||||
Dit onderzoek kijkt naar hoe dit gedaan kan worden.
|
||||
|
||||
## Onderzoeks vraag
|
||||
|
||||
hoofdvraag: Hoe kan een BLDC aangestuurd worden om het moment te maximaliseren
|
||||
vanaf stilstand.
|
||||
|
||||
### Deel vragen
|
||||
|
||||
- what control methods are there
|
||||
- torque over speed graph
|
||||
-
|
||||
|
||||
### Voor Onderzoek
|
||||
|
||||
zoek therm: "efficiency BLDC control method for low speed"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,34 +1,13 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
toc: true
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Gryvon Belfor"
|
||||
email: "0985890@hr.nl"
|
||||
name_short: "g. Belfor"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Pakket van Eisen
|
||||
|
||||
[toc]
|
||||
|
||||
## Inleiding
|
||||
|
||||
Bij dit project is de SPC^[Superlight Personal Carrier] opgesplitst in een aantal onderdelen. de eisen zijn verdeeld over deze onderdelen.
|
||||
@ -88,7 +67,7 @@ De opdracht gever wil graag tussen Amsterdam van Rotterdam kunnen rijden.
|
||||
|
||||
**REQ-A-10[SH]: Het voertuig kan bediend worden door een bestuurder met een lengte van 150 centimeter tot en met 200 centimeter.**
|
||||
|
||||
> bron [www.cbs.nl/nl-nl/maatwerk/2021/37/lichaamslengte](https://www.cbs.nl/nl-nl/maatwerk/2021/37/lichaamslengte)
|
||||
> bron https://www.cbs.nl/nl-nl/maatwerk/2021/37/lichaamslengte
|
||||
> 8% van 19 jarige vrouwen zijn korter dan 160
|
||||
> 10.2% van 19 jarige mannen zijn korter dan 175
|
||||
|
||||
|
||||
@ -1,32 +1,9 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
toc: true
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Gryvon Belfor"
|
||||
email: "0985890@hr.nl"
|
||||
name_short: "g. Belfor"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Plan van Aanpak
|
||||
|
||||
## Voorwoord
|
||||
@ -37,6 +14,10 @@ Het SPC-project is een innovatief en interdisciplinair initiatief waarin student
|
||||
|
||||
Dit document is met zorg samengesteld en biedt een helder overzicht van de huidige status van het project, de uitdagingen die voor ons liggen en de strategieën die we hanteren om deze te overwinnen. We willen hierbij onze begeleiders, docenten en projectpartners bedanken voor hun ondersteuning en waardevolle inzichten.
|
||||
|
||||
## Inhoud
|
||||
|
||||
[toc]
|
||||
|
||||
## Inleiding
|
||||
|
||||
Voor dit semester wordt er verder gewerkt aan het project **Superlight Personal Carrier (SPC)**. Het SPC-project is een samenwerking tussen studenten uit verschillende opleidingen bevordert, met als doel een lichtgewicht, zelf stabiliserend éénpersoonsvoertuig te ontwikkelen. Dit semester is gericht op het verfijnen en verbeteren van essentiële subsystemen, zoals het aandrijf- en stuursysteem en stabilisatie, waarbij er parameters uit een Digital Twin gehaald worden.
|
||||
@ -118,9 +99,9 @@ Er is nog onduidelijkheid over de samenwerking tussen aandrijving en besturing,
|
||||
|
||||
Er is nog geen uitgebreid testprotocol ontwikkeld om de prestaties van de aandrijving systematisch te valideren.
|
||||
|
||||
De huidige status (figuur \ref{pva_proto}) van het project vormt de basis voor verdere ontwikkelingen. De volgende stappen zijn gericht op het verder ontwikkelen van het aandrijf- en stuursysteem en de stabilisatie, zodat er een rijdend 2x2x2 voertuig gerealiseerd wordt.
|
||||
De huidige status van het project vormt de basis voor verdere ontwikkelingen. De volgende stappen zijn gericht op het verder ontwikkelen van het aandrijf- en stuursysteem en de stabilisatie, zodat er een rijdend 2x2x2 voertuig gerealiseerd wordt.
|
||||
|
||||

|
||||

|
||||
|
||||
## Scope & Afbakening
|
||||
|
||||
@ -129,14 +110,6 @@ De huidige status (figuur \ref{pva_proto}) van het project vormt de basis voor v
|
||||
De scope van een project bepaald wat er wel en niet behandeld gaat worden. Een scope wordt op meerdere aspecten gesteld. De aspecten waar onze scope over gaat zijn hieronder neergezet.
|
||||
Dit project richt zich op het ontwikkelen van functionele kernsystemen voor het voertuig, waarbij de nadruk ligt op de **aandrijving, de Digital Twin, het stuurmechanisme en de stabilisatie**.
|
||||
|
||||
| scope | Beschrijving | Afbakening |
|
||||
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| Aandrijving en Stuur-systeem | Ontwerpen en ontwikkelen van een functionele aandrijving en stuursysteem, gemonteerd in het fysieke voertuig | Focus op fysiek implementeerbare systemen |
|
||||
| | | |
|
||||
| Digital Twin | Ontwerp, validatie en optimalisatie aan de hand van gegeven uit de **Digital Twin** | Geen aerodynamica optimalisatie of andere optimalisatie |
|
||||
| | | |
|
||||
| Stabilisatie-ontwikkeling | Verdere ontwikkeling van het **stabilisatiesysteem**, met als einddoel een **full-scale implementatie** in het voertuig | Alleen binnen gegeven snelheidsbereik |
|
||||
|
||||
#### Aandrijving en Stuursysteem
|
||||
|
||||
Een nieuw stuursysteem en doorgerekende aandrijving zijn nodig voor basis functionaliteit van het voertuig. Deze systemen moeten aan de hand van de Digital Twin ontworpen worden. Het doel licht hierop bij goed ontwerp en onderbouwing. Het is daarom essentieel dat er goed nagedacht wordt over de nodige veiligheidsfactoren en limieten van componenten.
|
||||
@ -145,6 +118,8 @@ Een nieuw stuursysteem en doorgerekende aandrijving zijn nodig voor basis functi
|
||||
|
||||
Wij willen aan de hand van een Digital Twin andere subsystemen op het voertuig kunnen ontwerpen, valideren en optimaliseren. Deze gegevens moeten dus de rode draad vormen voor het gehele project.
|
||||
|
||||

|
||||
|
||||
#### Stabilisatie
|
||||
|
||||
Het doel van het project is om het voertuig te kunnen laten stabiliseren. Dit stabiliseren zal op het full scale voertuig gaan plaats vinden. Dit systeem moet werken door middel van het correctiewiel wat op de schaal testopstelling gedemonstreerd is te werken. Het is nu de taak om dit op full scale werkend te krijgen.
|
||||
@ -186,9 +161,9 @@ In de analyse fase worden de volgende documenten opgesteld:
|
||||
|
||||
### DMADV-model
|
||||
|
||||
In dit hoofdstuk wordt besproken over de aanpak van de opdracht en welke methode gevolgd zal worden tijdens het semester. Dit zal gedaan worden door middel van het DMADV-model (figuur \ref{pva_dmadv}). Dat staat voor Define, Measure, Analyze, Design en Verify.
|
||||
In dit hoofdstuk wordt besproken over de aanpak van de opdracht en welke methode gevolgd zal worden tijdens het semester. Dit zal gedaan worden door middel van het DMADV-model. Dat staat voor Define, Measure, Analyze, Design en Verify.
|
||||
|
||||

|
||||

|
||||
|
||||
#### Define
|
||||
|
||||
@ -202,22 +177,8 @@ In die tabel wordt de VOC (voice of customer) genoteerd en bij punten daarvan wo
|
||||
|
||||
De CTQ’s die uit de View of Client en View of Business zijn gehaald die voor dit onderzoek belangrijk zijn, zijn hieronder in tabelvorm genoteerd.
|
||||
|
||||
| Voice of customer | Drijfveer | Critical To Quality |
|
||||
| --------------------- | ------------------------------------------ | ----------------------------------------- |
|
||||
| zelf sabiliserend | Rechtopstaand tijdens stilstaan | Vliegwiel of stabilisator |
|
||||
| | goed bochten kunnen maken | Balans in voertuig |
|
||||
| | | |
|
||||
| Elektrish aangedreven | eleknische motor | in wiel motor |
|
||||
| | elektrisch opladen | accupakket |
|
||||
| | | |
|
||||
| 2x2x2 aandrijving | 2 sturende wielen | stuurstysteem voor en achter |
|
||||
| | 2 aangedreven wielen | motor voor en achter in het wiel |
|
||||
| | | |
|
||||
| openbareweg | mag op alle wegen tijden | kan minimaal 90 tijden |
|
||||
| | is goedgekeurd door overheid | voldoet aan regelement |
|
||||
| | | |
|
||||
| autonoom voorbereid | kan vanaf meerdere plekken bestuurd worden | kan drive by wire bestuurd worden |
|
||||
| | autonoom concept | worden concepten voor autonomie ontworpen |
|
||||

|
||||
|
||||
|
||||
De eisen opgesteld vanuit de opdrachtgever (klant) zijn als volgt:
|
||||
|
||||
@ -261,109 +222,18 @@ De verificatiefase van het DMADV-model is weliswaar de laatste fase, maar niet h
|
||||
|
||||
### OBS (Organization Breakdown Structure)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
tijn(Projectlijder <br/> Tijn Snijders)
|
||||
niels(Opdrachtgever <br/> Niels van Groningen)
|
||||
max(Automotive Engineer <br/> Max Kappert)
|
||||
thomas(Automotive Engineer <br/> Thomas Braam)
|
||||
Finley(Hoofd Elektro <br/> Finley van Reenen)
|
||||
Chris(Elekntotechnishce Engeneer <br/> Chris Tan)
|
||||
gryvon(Elekntotechnishce Engeneer <br/> Gryvon Belfor)
|
||||
mohamed(Elekntotechnishce Engeneer <br/> Mohamed El Morabiti)
|
||||
joris(Docentbegeleider <br/> Joris Straver)
|
||||
tijn -..-> niels
|
||||
tijn --> max & thomas & Finley
|
||||
Finley -..-> joris
|
||||
Finley --> Chris & gryvon & mohamed
|
||||
```
|
||||

|
||||
|
||||
|
||||
### PBS (Product Breakdown Structure)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
proj(Superlight Personal Carrier 2025)
|
||||
twin(Digital Twin)
|
||||
stab(Geintergreerde Stabilisatie)
|
||||
stuur(Struur Systeem)
|
||||
Aand(Aandrijving)
|
||||
|
||||
tijn(Mechanische <br/> Tijn Snijders)
|
||||
max(Mechanische <br/> Max Kappert)
|
||||
thomas(Simulatie <br/> Thomas Braam)
|
||||
Finley(Elektronishe <br/> Finley van Reenen)
|
||||
Chris(Elektronishe <br/> Chris Tan)
|
||||
gryvon(Hardware <br/> Gryvon Belfor)
|
||||
mohamed(Software <br/> Mohamed El Morabiti)
|
||||
proj --> twin & stab & stuur & Aand
|
||||
twin --> thomas
|
||||
stab --> tijn --> Finley
|
||||
stuur --> max --> Chris
|
||||
Aand --> gryvon --> mohamed
|
||||
```
|
||||

|
||||
|
||||
|
||||
### WBS (Work Breakdown Structure)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
spc(Superlight Personal Carrier)
|
||||
1(1\. Digital Twin)
|
||||
1.1(1.1 Simulatieontwikkeling)
|
||||
1.1.1(1.1.1 Modelvalidatie)
|
||||
1.1.2(1.1.2 Data-integratie)
|
||||
1.1.3(1.1.3 Testen en kalibreren)
|
||||
2(2\. Geintegreerde Sabilisatie)
|
||||
2.1(2.1 Mechanische ontwerp)
|
||||
2.1.1(2.1.1 Conceptontwikkeling)
|
||||
2.1.2(2.1.2 Simuleren)
|
||||
2.1.3(2.1.3 Prototyping)
|
||||
2.1.4(2.1.4 Realiseren)
|
||||
2.1.5(2.1.5 Valideren)
|
||||
2.2(2.2 Elektnoische ontwerp)
|
||||
2.2.1(2.2.1 Concept ontwikkeling)
|
||||
2.2.2(2.2.2 Defineren)
|
||||
2.2.3(2.2.3 Realiseren)
|
||||
2.2.4(2.2.4 Valideren)
|
||||
3(3\. Stuursysteem)
|
||||
3.1(3.1 Mechanische ontwerp)
|
||||
3.1.1(3.1.1 Stuurmechanisme)
|
||||
3.1.2(3.1.2 Montageontwerp)
|
||||
3.1.3(3.1.3 Realiseren)
|
||||
3.1.4(3.1.4 Valideren)
|
||||
3.2(3.2 Elektnoische ontwerp)
|
||||
3.2.1(3.2.1 Signaalverwerking)
|
||||
3.2.2(3.2.2 actuatorbesturing)
|
||||
3.2.3(3.2.3 Softwareconfiguratie)
|
||||
4(4\. Aandrijving)
|
||||
4.1(4.1 Hardware)
|
||||
4.1.1(4.1.1 Motorselectie)
|
||||
4.1.2(4.1.2 Vermogenselektronica)
|
||||
4.1.3(4.1.3 Energiebeheer)
|
||||
4.1.4(4.1.4 Realiseren)
|
||||
4.2(4.2 software)
|
||||
4.2.1(4.2.1 Regelsoftwere)
|
||||
4.2.2(4.2.2 Veiligheidsprotocollen)
|
||||
4.2.3(4.2.3 Communicatie-interfacd)
|
||||
4.2.4(4.2.4 Realiseren)
|
||||

|
||||
|
||||
spc --> 1 & 2 & 3 & 4
|
||||
|
||||
1 --> 1.1 --> 1.1.1 --> 1.1.2 --> 1.1.3
|
||||
|
||||
2 --> 2.1 & 2.2
|
||||
2.1 --> 2.1.1 --> 2.1.2 --> 2.1.3 --> 2.1.4 --> 2.1.5
|
||||
2.2 --> 2.2.1 --> 2.2.2 --> 2.2.3 --> 2.2.4
|
||||
|
||||
3 --> 3.1 & 3.2
|
||||
3.1 --> 3.1.1 --> 3.1.2 --> 3.1.3 --> 3.1.4
|
||||
3.2 --> 3.2.1 --> 3.2.2 --> 3.2.3
|
||||
|
||||
4 --> 4.1 & 4.2
|
||||
4.1 --> 4.1.1 --> 4.1.2 --> 4.1.3 --> 4.1.4
|
||||
4.2 --> 4.2.1 --> 4.2.2 --> 4.2.3 --> 4.2.4
|
||||
```
|
||||
|
||||
## Risico- en stakeholder analyse
|
||||
|
||||
@ -437,7 +307,8 @@ Om het SPC-project succesvol af te ronden, is een goede planning, communicatie e
|
||||
|
||||
### Risico matrix
|
||||
|
||||
Er is een risico matirx gemaakt in Exel, dit bestand is samengevoed met dit documnet.
|
||||

|
||||
|
||||
|
||||
### Stakeholder analyse
|
||||
|
||||
@ -480,7 +351,7 @@ C – Consulted (Geraadpleegd): dit is de persoon aan wie vooraf advies gevraagd
|
||||
I – Informed (Geïnformeerd): deze persoon wordt tussentijds geïnformeerd over de beslissingen, over de voortgang, bereikte resultaten enz.
|
||||
|
||||
| | Tijn | Max | Thomas | Gryvon | Chris | Finley | Mohammed | Van Groningen |
|
||||
| ------------------- | ---- | --- | ------ | ------ | ----- | ------ | -------- | ------------- |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| Projectplanning | R | I | I | I | I | I | I | |
|
||||
| PVE | I | I | I | I | R | A/R | I | C |
|
||||
| Sponsering | A | R | I | I | I | I | I | I |
|
||||
@ -524,15 +395,17 @@ In de analyse fase worden de volgende documenten opgesteld:
|
||||
|
||||
### Value planning
|
||||
|
||||
Zie `planned value.pdf`.
|
||||

|
||||
|
||||
|
||||
### Dynamische planning
|
||||
|
||||
Deze planning geeft een overzicht van de verschillende fasen en bijbehorende taken binnen dit project. Door middel van een Gantt-diagram (figuur \ref{gantt}) worden de doorlooptijden, afhankelijkheden en mijlpalen visueel weergegeven. De planning is opgedeeld in meerdere sprints, waaronder **Sprint Analyseren**, **Sprint Realiseren**, **Sprint Optimaliseren**, en **Sprint Valideren**, waarmee het project stapsgewijs wordt ontwikkeld en geoptimaliseerd.
|
||||
Deze planning geeft een overzicht van de verschillende fasen en bijbehorende taken binnen dit project. Door middel van een Gantt-diagram worden de doorlooptijden, afhankelijkheden en mijlpalen visueel weergegeven. De planning is opgedeeld in meerdere sprints, waaronder **Sprint Analyseren**, **Sprint Realiseren**, **Sprint Optimaliseren**, en **Sprint Valideren**, waarmee het project stapsgewijs wordt ontwikkeld en geoptimaliseerd.
|
||||
|
||||
De blauwe balken geven de duur van elke taak aan, terwijl de diamantvormige symbolen belangrijke mijlpalen markeren. De rode verticale lijn geeft de huidige voortgang weer. Dit overzicht helpt bij het bewaken van deadlines, het coördineren van werkzaamheden en het tijdig bijsturen van het project waar nodig
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## Begroting
|
||||
|
||||
|
||||
@ -1,295 +1,104 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
toc: true
|
||||
lof: true
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
*[PvE]: Plan van Aanpak
|
||||
*[MS Exel]: Microsoft Exel
|
||||
*[SPC]: Superlight Personal Carier
|
||||
*[VCU]: Vehicle Control Unit
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Superlight Personal Carier (SPC)
|
||||
|
||||
## inhoudsopgaven
|
||||
|
||||
[toc]
|
||||
|
||||
## Inleiding
|
||||
|
||||
Dit SPC-project is een samenwerking tussen de opleidingen Automotive en
|
||||
Elektrotechniek. Het doel van het project is om een lichtgewicht, zelf
|
||||
stabiliserend eenpersoonsvoertuig te ontwikkelen dat als een testplatform kan
|
||||
dienen. Door het voertuig lichter te maken in gewicht zorgt dit voor een
|
||||
kleinere milieuvriendelijke manier van persoonlijk transport te maken dan een
|
||||
'gewone' auto.
|
||||
|
||||
Dit project bouwt voort op eerdere inspanningen en richt zich op het verder
|
||||
verfijnen en implementeren van cruciale systemen zoals de aandrijving, het
|
||||
stuurmechanisme en de Digital Twin-technologie.
|
||||
|
||||
Het SPC-project is een innovatief en interdisciplinair initiatief waarin
|
||||
studenten van de opleidingen Automotive en Electrotechniek samenwerken. Dit
|
||||
project bouwt voort op eerdere inspanningen en richt zich op het verder
|
||||
verfijnen en implementeren van cruciale systemen zoals de aandrijving, het
|
||||
stuurmechanisme en de Digital Twin-technologie.
|
||||
|
||||
#### Documentatie
|
||||
|
||||
In dit project is de documentatie gedaan in Markdown, dit is een tekstindeling
|
||||
voor het schrijven van gestructureerde documenten. Het voordeel hiervan is dat
|
||||
de opmaak meer consistent is en er van Git gebruikt gemaakt kan worden om
|
||||
bewerkingen bij te houden. Dit maakt het voor de elektrotechnici eenvoudiger om
|
||||
alle informatie overzichtelijk te beheren.
|
||||
|
||||
Om ook aan de eisen van de autotechnici te voldoen, die in Microsoft Word en
|
||||
Excel moeten werken, zijn de gezamenlijke documenten hierin gemaakt.
|
||||
|
||||
Voor een effectieve samenwerking is er gebruikgemaakt van HedgeDoc (op
|
||||
[live.kladjes.nl](https://live.kladjes.nl)). Dit is een open-source Markdown
|
||||
editor. Op deze manier konden alle projectleden tegelijkertijd werken in
|
||||
hetzelfde document. Vanuit HedgeDoc wordt de documentatie gesynchroniseerd naar
|
||||
een Git repository om de bewerkingen bij te houden.
|
||||
|
||||
Om de Markdown om te zetten naar PDF wordt Pandoc en TexLive gebruikt. Pandoc
|
||||
converteert de inhoud naar Latex. Deze output wordt vervolgens met TexLive
|
||||
geconverteerd naar een PDF. Om dit proces te versimpelen is GNU Make gebruikt.
|
||||
Hiermee is het proces geautomatiseerd en toegankelijker gemaakt voor alle
|
||||
gebruikers.
|
||||
|
||||
Door wat extra moeite en tijd te besteden aan het begin van het project aan deze
|
||||
opzet, werd het tijdens het project gemakkelijker en eenvoudiger om de
|
||||
informatie vanuit verschillende kennisgebieden samen te brengen. Daarnaast
|
||||
zorgde het er ook voor dat het document gemakkelijk als geheel in zowel opmaak
|
||||
als inhoud opgeleverd kon worden.
|
||||
|
||||
#### Documentindeling
|
||||
|
||||
Het document is geschreven met het primaire doel dat de volgende projectgroep de
|
||||
genomen stappen begrijpt en hier zelfstandig op verder kan bouwen.
|
||||
|
||||
Zometeen start het document met de analyse, waarin aan de hand van de eisen is
|
||||
geanalyseerd wat er nodig is voor het project. Na de analyse zijn de benodigde
|
||||
onderdelen en de bijbehorende eisen beschreven onder het kopje architectuur. Er
|
||||
wordt per unit verdiepender ingegaan op wat er nodig is. Vervolgens wordt er
|
||||
kort een update gegeven over het projectverloop. We sluiten af met een conclusie
|
||||
en adviezen.
|
||||
|
||||
Veel gebruikte data en plannen zijn in de bijlage geplaatst, zodat het document
|
||||
overzichtelijk blijft. Er wordt in het document verwezen naar de relevante
|
||||
bijlagen.
|
||||
|
||||
Naar de gebruikte theorie voor het project is gerefereerd volgens de
|
||||
IEEE-standaard.
|
||||
Het SPC-project is een project vanuit de opleiding Automotive. Het doel is om een lichtgewicht, zelf stabiliserend persoonsvoertuig te ontwikkelen dat als een testplatform kan dienden. Bij dit test platform is het doel om een kleinere milieu vriendelijkere manier van persoonlijk transport dan een 'gewone' auto.
|
||||
|
||||
## Analyse
|
||||
|
||||
De opdrachtgever voor dit project is Niels Groningen. Zijn opdracht is om een
|
||||
testplatform te ontwerpen. De grootste uitdaging van dit testplatform is dat het
|
||||
nog niet bekend is wat er precies getest gaat worden. Het is hierdoor lastig om
|
||||
harde eisen te stellen. Het moet dus mogelijk zijn om verschillende soorten
|
||||
testen te doen.
|
||||
Niels Groningen - de opdracht gever - wil graag een test platform hebben. Het is lastig harde eisen te stellen aan dit testplatform, aangezien nog niet exact bekend is wat er getest op gaat worden. Het is de bedoeling dat er verschillen soorten testen op gedaan kunnen worden.
|
||||
|
||||
In overleg met de opdrachtgever zijn de verwachtingen vastgelegd. Deze zijn
|
||||
binnen de projectgroep omgezet in meetbare en haalbare eisen. Hieruit is een
|
||||
Plan van Eisen (PvE) samengesteld.
|
||||
Voor dit project zijn er wel duidelijke eisen nodig zodat het duidelijk is dat we allebei hetzelfde idee hebben hoe die moet werken. Hierom is er dus doorgevraagd en zijn een aantal richtlijnen uitgekomen.
|
||||
|
||||
Dit plan is opgezet via de MoSCoW-methode. Dit is een projectmanagements- en
|
||||
prioriteringsstrategie om eisen en taken te classificeren. Met deze methode
|
||||
worden de eisen onderverdeeld in prioriteiten. Eisen waar zeker aan voldoen moet
|
||||
worden om het project te laten slagen (MH), eisen die zeer gewenst zijn (SH),
|
||||
eisen die extra toegevoegd kunnen worden (CH) en eisen die (op het moment) niet
|
||||
verstandig zijn om aandacht aan te besteden (WH). In de bijlage is de \[PvE\] te
|
||||
vinden. Hieronder een verklaring van de genomen beslissingen.
|
||||
- Het voertuig moet een redelijke actieradius hebben, zoals bijvoorbeeld comfortabel vanaf Amsterdam naar Rotterdam kunnen rijden.
|
||||
- Het moet over de snelweg kunnen in theorie, maar hoeft niet aan alle regelgevingen te voldoen.
|
||||
- Er moet actieve stabilisatie op komen.
|
||||
- Beide wielen moeten gestuurd en aangedreven worden.
|
||||
- Het voertuig moet zo licht mogelijk zijn, zonder te veel weg te nemen van gebruikers vriendelijkheid voor de bestuurder.
|
||||
- Het voertuig moet uiteindelijk semi-automatisch kunnen rijden.
|
||||
|
||||
Er is voor beide opleidingen een PvE gevormd met dezelfde inhoud, maar een
|
||||
andere opstelling. Het was lastig om deze op dezelfde manier op te bouwen, want
|
||||
voor beide opleidingen was er andere inhoud nodig om de resultaten te
|
||||
presenteren.
|
||||
Op basis van deze richtlijnen is er een Pakket van Eisen opgesteld, hierna is er nog wat meer heen en weer gegaan om de eisen wat te fine tunen.
|
||||
|
||||
#### Actieradius
|
||||
|
||||
De opdrachtgever gaf aan dat het voertuig een redelijke actieradius moet hebben.
|
||||
Volgens hem was dit bijvoorbeeld dat het voertuig comfortabel vanaf Amsterdam
|
||||
naar Rotterdam kan rijden. In overleg met de opdrachtgever is deze eis zeer
|
||||
gewenst (SH), maar geen eis (MH).
|
||||
|
||||
Hiervoor zijn de eisen **REQ-A-6\[SH\]** en **REQ-A-7\[CH\]** toegevoegd. Er is
|
||||
om aan de wensne te voldoen onderzocht wat de afstand tussen Rotterdam en
|
||||
Amsterdam via de weg is. Deze bedraagt ongeveer 75 kilometer
|
||||
^[[https://www.google.com/maps/dir/Amsterdam/Rotterdam/data=\!4m10\!4m9\!1m2\!1m1\!1s0x47c63fb5949a7755:0x6600fd4cb7c0af8d\!1m2\!1m1\!1s0x47c5b7605f54c47d:0x5229bbac955e4b85\!2m1\!1b1\!3e0?sa=X\&ved=1t:3747\&ictx=111](https://www.google.com/maps/dir/Amsterdam/Rotterdam/data=!4m10!4m9!1m2!1m1!1s0x47c63fb5949a7755:0x6600fd4cb7c0af8d!1m2!1m1!1s0x47c5b7605f54c47d:0x5229bbac955e4b85!2m1!1b1!3e0?sa=X&ved=1t:3747&ictx=111)].
|
||||
Voor de ondergrens (SH) is er met deze informatie gekozen voor een actieradius
|
||||
van minimaal 100 kilometer in ideale omstandigheden. Als extra doel (CH) is er
|
||||
een eis toegevoegd voor een actieradius van 250 kilometer in ideale
|
||||
omstandigheden.
|
||||
|
||||
#### Snelweg
|
||||
|
||||
Volgens de opdrachtgever moet het voertuig in theorie over de snelweg kunnen,
|
||||
maar hoeft niet aan alle regelgevingen te voldoen.
|
||||
|
||||
Hiervoor is de eis **REQ-A-4\[MH\]** opgesteld. 60 km/h is de minimale snelheid
|
||||
voor op de snelweg^[https://www.rijksoverheid.nl/onderwerpen/wegen/vraag-en-antwoord/wat-is-de-minimumsnelheid-voor-het-wegverkeer].
|
||||
|
||||
#### Stabilisatie {#stabilisatie}
|
||||
|
||||
Er moet actieve stabilisatie op komen.
|
||||
|
||||
#### Wielen {#wielen}
|
||||
|
||||
Beide wielen moeten gestuurd en aangedreven worden.
|
||||
|
||||
#### Gewicht voertuig {#gewicht-voertuig}
|
||||
|
||||
Het voertuig moet zo licht mogelijk zijn, zonder te veel weg te nemen van
|
||||
gebruiksvriendelijkheid voor de bestuurder.
|
||||
|
||||
#### Semiautomatisch {#semiautomatisch}
|
||||
|
||||
Het voertuig moet uiteindelijk semiautomatisch kunnen rijden.
|
||||
Het resulterende Pakket van Eisen is te vinden in de bijlagen.
|
||||
|
||||
## Architectuur
|
||||
|
||||
Het diagram in figuur \ref{doc_units} is een overzicht van de units van dit project.
|
||||
Het systeem heeft verschillende onderdelen die te zien zijn in het DFD1, elk onderdeel zorgt ervoor dat het voertuig kan rijden en een stapje verder kan zetten in het einddoel, het vervoeren van een persoon.
|
||||
|
||||

|
||||

|
||||
|
||||
### unit: Vehicle Control Unit (VCU)
|
||||
### VCU
|
||||
|
||||
De VCU heeft alle ingangen voor de bestuurder voor het sturen, gas geven en remmen.
|
||||
De Vehicle Control Unit zorgt voor veel onderdelen in het systeem waaronder het sturen van het voertuig en aangeven hoe snel de gebruiker wil, die geeft een signaal naar de stabilisatie en de motor.
|
||||
|
||||
Voor deze unit gelden de volgende eisen van het PvA:
|
||||
REQ-C-1[MH]: het voertuig wordt bestuurd doormiddel van een elektronisch input, zoals een joystick, die bedienbaar is door de bestuurder.
|
||||
|
||||
**REQ-C-1[MH]**: het voertuig wordt bestuurd doormiddel van een elektronisch
|
||||
input, zoals een joystick, die bedienbaar is door de bestuurder.
|
||||
**REQ-C-2[MH]**: er is een noodstop aanwezig.
|
||||
REQ-C-2[MH]: er is een noodstop aanwezig.
|
||||
|
||||
### unit: Stuur systeem
|
||||
### Stabilisatie
|
||||
|
||||
Zodat het voertuig niet alleen rechtuit kan rijden. Er is een nouwe samenwerking
|
||||
geweest tussen cd VCU en het stuursysteem, omdat de zelfde hoofd persoon de
|
||||
elektronica voor bijde units is.
|
||||
De stabilisatie is nodig zodat we het voertuig niet hoeven te verlaten als we stil moeten staan, dit is omdat de bestuurder ingecapsuleerd is in het voertuig. De VCU geeft een data signaal aan de Stabilisatie hoeveel vermogen die mag gebruiken.
|
||||
|
||||
Voor deze unit gelden de volgende eisen van het PvA:
|
||||
REQ-S-1[MH]: Het voertuig wordt actief gestabaliseerd
|
||||
|
||||
**REQ-W-3[SH]**: het voertuig stuurt met beide wielen.
|
||||
**REQ-W-8[MH]**: het voertuig heeft een draaicirkel van 6 meter in diameter of
|
||||
minder.
|
||||
REQ-S-2[SH]: Het voertuig kan uit zichzelf weer recht komen te zitten vanaf een roll hoek van 5 graden
|
||||
|
||||
### unit: Stabilisatie
|
||||
### aandrijving
|
||||
|
||||
De stabilisatie is om het voertuig rechtop te houden bij bijvoorbeeld het
|
||||
wachten bij een kruispunt of een stoplicht.
|
||||
De aandrijving zorgt ervoor dat het voertuig zichzelf kan voortbewegen op genoeg snelheid zodat er veilig op de weg gereden kan worden. de VCU stuurt een signaal voor accelereren of remmen.
|
||||
|
||||
Voor deze unit gelden de volgende eisen van het PvA:
|
||||
REQ-A-4[MH]: Het voertuig is ontworpen zodat de maximale snelheid 60 kilometer per uur of sneller is.
|
||||
|
||||
**REQ-S-1[MH]**: Het voertuig wordt actief gestabaliseerd
|
||||
**REQ-S-2[SH]**: Het voertuig kan uit zichzelf weer recht komen te zitten vanaf
|
||||
een roll hoek van 5 graden
|
||||
60 km/h is de minimale snelheid voor op de snelweg.
|
||||
|
||||
### unit: Aandrijving
|
||||
REQ-A-5[SH]: Het voertuig is ontworpen zodat die 150 kilometer per uur of sneller kan rijden in ideale omstandigheden.
|
||||
|
||||
De aandrijving zorgt ervoor dat het voertuig zichzelf kan voortbewegen op genoeg
|
||||
snelheid zodat er veilig op de weg gereden kan worden. de VCU stuurt een signaal
|
||||
voor accelereren of remmen.
|
||||
REQ-A-6[SH]: Het voertuig is ontworpen zodat die 100 kilometer actieradius of meer kan bereiken in ideale omstandigheden.
|
||||
|
||||
Voor deze unit gelden de volgende eisen van het PvA:
|
||||
De opdracht gever wil graag tussen Amsterdam van Rotterdam kunnen rijden.
|
||||
|
||||
**REQ-A-4[MH]**: Het voertuig is ontworpen zodat de maximale snelheid 60
|
||||
kilometer per uur of sneller is.
|
||||
**REQ-A-5[SH]**: Het voertuig is ontworpen zodat die 150 kilometer per uur of
|
||||
sneller kan rijden in ideale omstandigheden.
|
||||
**REQ-A-6[SH]**: Het voertuig is ontworpen zodat die 100 kilometer actieradius
|
||||
of meer kan bereiken in ideale omstandigheden.
|
||||
**REQ-A-7[CH]**: Het voertuig is ontworpen zodat die 250 kilometer actieradius
|
||||
of meer kan bereiken in ideale omstandigheden.
|
||||
REQ-A-7[CH]: Het voertuig is ontworpen zodat die 250 kilometer actieradius of meer kan bereiken in ideale omstandigheden.
|
||||
|
||||
## Vehicle Control Unit (VCU) / Stuursysteem
|
||||
|
||||
De VCU is een belangrijk onderdeel van het systeem, hiermee kunnen we het
|
||||
voertuig in een richting sturen en vooruit bewegen. De belangrijkste keuzes
|
||||
hierin zijn in welke taal we willen gaan programmeren en wat voor soort
|
||||
microcontroller we willen. De reden hiervoor is zodat de volgende team
|
||||
makkelijker kan omgaan met de code en het systeem makkelijker kunnen uitbreiden.
|
||||
Het makkelijkst is dan om met de Arduino IDE en framework verder te gaan, omdat
|
||||
het een bekent en veel gedocumenteerd systeem is waar je veel over kan vinden op
|
||||
internet tegenover veel andere IDE's, programmeertalen en microcontrollers.
|
||||
Verder moet het ook draadloos verbinding kunnen maken met een console controller
|
||||
zodat de volgende teams eventueel een andere keuze kunnen maken hoe ze willen
|
||||
sturen. Daarom hebben we voor de ESP32 gekozen omdat het alles aantikt met een
|
||||
gezond aantal GPIO pinnen.
|
||||
## Vehicle Control unit (VCU)
|
||||
|
||||
De VCU is een belangrijk onderdeel van het systeem, hiermee kunnen we het voertuig in een richting sturen en vooruit bewegen. De belangrijkste keuzes hierin zijn in welke taal we willen gaan programmeren en wat voor soort microcontroller we willen. De reden hiervoor is zodat de volgende team makkelijker kan omgaan met de code en het systeem makkelijker kunnen uitbreiden. Het makkelijkst is dan om met de Arduino IDE en framework verder te gaan, omdat het een bekent en veel gedocumenteerd systeem is waar je veel over kan vinden op internet tegenover veel andere IDE's, programmeertalen en microcontrollers. Verder moet het ook draadloos verbinding kunnen maken met een console controller zodat de volgende teams eventueel een andere keuze kunnen maken hoe ze willen sturen. Daarom hebben we voor de ESP32 gekozen omdat het alles aantikt met een gezond aantal GPIO pinnen.
|
||||
|
||||
### Actuator
|
||||
|
||||
De actuator hebben we nodig om de wielen in een richting te kunnen sturen.
|
||||
Volgens Max Kappert(student automotive engineer) hebben we de volgende
|
||||
parameters gekregen die we nodig hebben om het voertuig te kunnen sturen.
|
||||
De actuator hebben we nodig om de wielen in een richting te kunnen sturen. Volgens Max Kappert(student automotive engineer) hebben we de volgende parameters gekregen die we nodig hebben om het voertuig te kunnen sturen.
|
||||
|
||||
| Parameter | Waarde | Eenheid | Opmerking |
|
||||
| ---------------------- | ------------- | -------- | ------------------------------------------------------------- |
|
||||
| Voertuig-spanning | 12 - 14 | $V_{DC}$ | typisch voor auto-VCU's |
|
||||
| Stuurspanning-demperkle | 0 - 5 | $V_{DC}$ | naloge regeling |
|
||||
|--------------------------------|-------------|------------|----------------------|
|
||||
| Voertuigspanning | 12 - 14 | $V_{DC}$ | typisch voor auto-VCU's |
|
||||
| Stuurspanningdemperkle | 0 - 5 | $V_{DC}$ | naloge regeling |
|
||||
| PWM-signaal frequentie | 25000 - 30000 | $Hz$ | Typische range voor aansturing |
|
||||
| PWM duty cycle | 10 - 90 | $\%$ | $10\%$: minimale demping, $90\%$: maximale demping^[demping voor de ophanging via de interne actuator demper] |
|
||||
| PWM duty cycle | 10 - 90 | $\%$ | $10%$: minimale demping, $90%$: maximale demping^[demping voor de ophanging via de interne actuator demper] |
|
||||
| Stroomverbruik klep | 0.5 - 2 | $A$ | Afhankelijk van de interne weerstand |
|
||||
| Wielsnelheid | 0 - 250 | $km/h$ | Meet snelheid per wiel |
|
||||
| Karrosserie-versnelling | -3 tot +3 | $g$ | Laterale en verticale versnellingen |
|
||||
| Karrosserieversnelling | -3 tot +3 | $g$ | Laterale en verticale versnellingen |
|
||||
| Axiale potentiometer (veerweg) | 0 - 50 | $mm$ | Meet veeruitslag |
|
||||
| Temperatuur werkbereik | -40 tot +85 | $^\circ C$ | Automobielstandaard |
|
||||
|
||||
Voor de Actuator is er een keuze gemaakt voor CDC (Continuous Damping Control)
|
||||
demper van SACHS, Maar vanwege de besteltijden van dit soort componenten kunnen
|
||||
we dit niet gebruiken. Daarom gebruiken we een actuator die er al staat, de
|
||||
A0-01/M van S-LINE. om de actuator te besturen gebruiken we een motordriver, de
|
||||
MDD20A. Dit is omdat we het al hebben en werkt met de huidige actuatoren en
|
||||
voldoende de parameters van de actuatoren behaald, daarom hebben we besloten om
|
||||
niet een nieuwe te kopen of te ontwerpen. Om ervoor te zorgen dat de actuatoren
|
||||
niet te ver gaan gebruiken we de AS5600 magnetic encoder. Dit is omdat de
|
||||
encoder een absoluut positie meegeeft en daarom voor minder problemen zorgt als
|
||||
het voertuig opnieuw opstart.
|
||||
Voor de Actuator is er een keuze gemaakt voor CDC (Continuous Damping Control) demper van SACHS, Maar vanwege de besteltijden van dit soort componenten kunnen we dit niet gebruiken. Daarom gebruiken we een actuator die er al staat, de A0-01/M van S-LINE. om de actuator te besturen gebruiken we een motordriver, de MDD20A. Dit is omdat we het al hebben en werkt met de huidige actuatoren en voldoende de parameters van de actuatoren behaald, daarom hebben we besloten om niet een nieuwe te kopen of te ontwerpen. Om ervoor te zorgen dat de actuatoren niet te ver gaan gebruiken we de AS5600 magnetic encoder. Dit is omdat de encoder een absoluut positie meegeeft en daarom voor minder problemen zorgt als het voertuig opnieuw opstart.
|
||||
|
||||
## Stabilisatie
|
||||
|
||||
De groepen voor ons hebben al een klein schaal model voor een reactiewiel
|
||||
gemaakt en een vliegwiel opstelling, wat volledige schaal lijkt te zijn, gemaakt.
|
||||
|
||||
Documentatie over de vliegwiel opstelling hebben wij niet terug gevonden. Maar
|
||||
wel van het kleine schaal model, de reactiewiel opstelling is pas aan het einde van het project gevonden - Voor onze opvolgers, in het Proto Lab tussen de planten en de 3D
|
||||
printers is de linker kast - De reactiewiel opstelling is later gemaakt dan de vliegwiel opstelling, er was dus blijkbaar een reden geweest dat de vliegwiel opstelling niet geschikt was. De automotive engineers onder ons hebben berekent wat de beste keuze is.
|
||||
|
||||
Dit heeft even geduurd, ondertussen zijn de elektronische engineers onderzoek gedaan naar wat voor soort motor drivers er zijn.
|
||||
|
||||
Uiteindelijk kwamen de automotive engineers uit op een vliegwiel van $10kg$ met een kracht van $45Nm$ en een maximale snelheid van $1000rpm$.
|
||||
Voor de Stabilisatie is er een motor driver ontworpen. De specificaties van deze zijn groten deels gebaseerd op specifieke motor. Samen met Automotive is deze uitgekozen.
|
||||
|
||||
### De Motor
|
||||
|
||||
Het is er een die gevonden is op Aliexpress, niet een heel erg betrouwbare
|
||||
verkoper, maar we kunnen geen andere geschikte vinden voor een redelijke prijs.
|
||||
Er is wel test data beschikbaar waar een rekenmodel mee gemaakt kan worden.
|
||||
Deze motor kan de kracht net niet continu aan, maar wel voor korte duur. De
|
||||
snelheid is wel iets ingeperkt ten opzichte van de berekende $1000 rpm$ dat
|
||||
nodig is, deze kan maar tot $875 rpm$. Dit is de reden geweest dat we geen motor
|
||||
gaan inkopen, maar een testen met een motor uit de voorraad. Deze zal
|
||||
waarschijnlijk niet voldoende vermogen kunnen halen, maar we kunnen wel testen
|
||||
of het concept werkt voordat er grote bedragen uitgegeven gaan worden aan een
|
||||
geschikte motor.
|
||||
Het is er een die gevonden is op Aliexpress, niet een heel erg betrouwbare verkoper, maar we kunnen geeb andere geschikte vinden voor een redelijke prijs. Deze motor kan de kracht net niet continu aan, maar wel voor korte duur. De snelheid is wel iets ingeperkt ten opzichte van de berekende $1000 rpm$ dat nodig is, deze kan maar tot $875 rpm$. Dit is de reden geweest dat we geen motor gaan inkopen, maar een testen met een motor uit de voorraad. Deze zal waarschijnlijk niet voldoende vermogen kunnen halen, maar we kunnen wel testen of het concept werkt voordat er grote bedragen uitgegeven gaan worden aan een geschikte motor.
|
||||
|
||||
De specificaties van de motor:
|
||||
|
||||
@ -298,76 +107,45 @@ De specificaties van de motor:
|
||||
- $K_v = 69 rpm/V$ - motor snelheidsconstante
|
||||
- $V_{th} = 598 mV$ - threshold voltage
|
||||
- $I_{max} = 78.5 A$ - maximaal stroom verbruik voor onze applicatie ($11.2Nm$ met 1:4 gearbox)
|
||||
- $U_{max} = 72 V$ - maximaal spanning benodigd voor onze applicatie
|
||||
- $U_{max} = 64 V$ - maximaal spanning benodigd voor onze applicatie
|
||||
|
||||
berekeningen voor deze waardes staan in het Detailontwerp Stabilisatie in
|
||||
hoofdstuk [Motor Keuze](#motor-keuze) (zie bijlagen)
|
||||
berekeningen voor deze waardes staan in het Detailontwerp Stabilisatie in hoofdstuk [Motor Keuze](#motor-keuze) (zie bijlagen)
|
||||
|
||||
> Er is helaas iets fout gegaan bij de berekeningen die eerder gedaan hebben om de
|
||||
> specificaties vast te stellen. Er is per ongeluk met $25 Nm$ gerekend i.p.v.
|
||||
> $45 Nm$. Dit betekent dat de motor driver is ontworpen voor $50 A$ i.p.v.
|
||||
> $80A$. Dit kan opgelost worden door een motor gearbox combinatie die te vinden is
|
||||
> met $50A$ maar met een hogere spanning het vermogen haalt. Er is veel ruimte
|
||||
> aan spanning, dus dit zal oplosbaar moeten zijn.
|
||||
> Er is helaas iets fout gegaan bij de berekeningen die eerder gedaan zuhb om de specificaties vast te stellen. Er is per ongeluk met $25 Nm$ gerekent i.p.v. $45 Nm$. Dit betekent dat de motor driver is ontworpen voor $50 A$ i.p.v. $80A$. Dit kan opgelost worden door een motor gearbox combie die te vinden is met $50A$ maar met een hogere spanning het vermogen haalt. Er is veel ruimte aan spanning, dus dit zal geen groot probleem moeten zijn.
|
||||
|
||||
### Motor Driver
|
||||
|
||||
#### specificaties
|
||||
|
||||
- De drijver moet minimaal $72 V$ aan kunnen, met voorkeur van meer dan $120 V$ [^1]
|
||||
- De drijver moet minimaal $64 V$ aan kunnen, met voorkeur van meer dan $120 V$ [^1]
|
||||
|
||||
De $120V$ komt van de vorige groep die aan dit project hebben gewerkt. Dit is de
|
||||
spanning van de accu die zij hadden gebruikt om dingen mee te berekenen. Er is
|
||||
nog geen besluit wat deze spanning werkelijk gaat worden.
|
||||
De $120V$ komt van de vorige groep die aan dit project hebben gewerkt. Dit is de spanning van de accu die zij hadden gebruikt om dingen mee te berekenen. Er is nog geen besluit wat deze spanning werkelijk gaat worden.
|
||||
|
||||
- De drijver moet minimaal $50 A$ continu kunnen leveren (wat eigenlijk $80 A$
|
||||
had moeten zijn) [^1]
|
||||
- Maakt gebruik van Field Oriented Control, om het volledige vermogen te kunnen
|
||||
halen vanaf stilstand.
|
||||
- De drijver moet minimaal $50 A$ continu kunnen leveren (wat eigenlijk $80 A$ had moeten zijn) [^1]
|
||||
- Maakt gebruik van Field Oriented Control, om het volledige vermogen te kunnen halen vanaf stilstand.
|
||||
- De hoek van het voertuig moet gemeten worden.
|
||||
- Er is een regel loop tussen de hoek sensor en de kracht van de motor.
|
||||
- Er is een SPI-client connector waarmee verschillende instellingen ingesteld
|
||||
mee kan worden, waaronder het maximaal vermogen.
|
||||
- Er is een SPI-client connector waarmee verschillende instellingen ingesteld mee kan worden, waaronder het maximaal vermogen.
|
||||
|
||||
[^1]: Er wordt tot $50 V$ getest, voor deze waardes wordt het ontworpen, maar niet tot het limiet getest.
|
||||
|
||||
Met deze specificaties is het erg lastig om een motor driver voor te vinden. Zo
|
||||
lastig dat - zonder een bedrijf één te laten ontwerpen - we er geen gevonden
|
||||
hebben. Hierom is gekozen om zelf een motor driver te ontwerpen.
|
||||
Met deze specificaties is het erg lastig om een motor driver voor te vinden. Zo lastig dat - zonder een bedrijf één te laten ontwerpen - we er geen gevonden hebben. Hierom is gekozen om zelf een motor driver te ontwerpen.
|
||||
|
||||
De SPI-client is afgesproken met de andere elektrotechnische ingenieurs als
|
||||
algemeen communicatie protocol nadat was besloten om een eigen motor driver te
|
||||
ontwerpen.
|
||||
De SPI-client is afgesproken met de andere elektrotechnische ingenieurs als algemeen communicatie protocol nadat was besloten om een eigen motor driver te ontwerpen.
|
||||
|
||||
#### Ontwerp
|
||||
|
||||
Het ontwerp is gemaakt door Finley, zij heeft op haar stage al een motor driver
|
||||
ontworpen. Hier heeft ze heel veel geleerd over het ontwerpen van een motor
|
||||
driver. Hier komt ook veel van de kennis vandaan. Deze motordriver is niet
|
||||
gebaseerd op die motor driver, deze kan maar $3A$ aan, dus compleet opnieuw
|
||||
beginnen is makkelijker.
|
||||
Het ontwerp is gemaakt door Finley, zij heeft op haar stage al een motor driver ontworpen. Hier heeft ze heel veel geleerd over het ontwerpen van een motor driver. Hier komt ook veel van de kennis vandaan. Deze motordriver is niet gebaseerd op die motor driver, deze kan maar $3A$ aan, dus compleet opnieuw beginnen is makkelijker.
|
||||
|
||||
##### Half-bridges
|
||||
|
||||
De motor is een BLDC motor de volledige naam is een permanent magneet
|
||||
borstelloze 3 fase synchrone motor. Dit betekent dat er permanente magneten in
|
||||
zitten, geen borstels, aangestuurd met 3 fase en synchrone draait met deze 3
|
||||
fases.
|
||||
De motor is een BLDC motor de volledige naam is een permanent magneet borstelloze 3 fase synchrone motor. Dit betekent dat er permanente magneten in zitten, geen borstels, aangestuurd met 3 fase en synchrone draait met deze 3 fases.
|
||||
|
||||
De motor driver wordt gevoed van een accu, dus DC. Om deze synchrone 3 fases te
|
||||
genereren zijn drie half-brdiges nodig. Een voor elke fase.
|
||||
De motor driver wordt gevoed van een accu, dus DC. Om deze synchrone 3 fases te genereren zijn drie half-brdiges nodig. Een voor elke fase.
|
||||
|
||||
Voor de FET's voor deze Half-bridges is gekozen voor de EPC2307, Dit zijn
|
||||
GaNFET's in tegenstelling to de vaker gebruikte MOSFET's. MOSFET fabrikanten
|
||||
hebben een gewoonte om de maximale stroom te berekenen met perfecte koeling. Dit
|
||||
is dus niet realistisch haalbaar. Om achter te komen wat wel haalbaar is is een
|
||||
thermal analyses nodig, dit is grof weg gedaan voor een redelijk wat MOSFET's,
|
||||
maar geen enkel was geschik om de $50A$ te schakelen. EPC (Efiction Power
|
||||
Converter; de fabrikant van de EPC2307) is een van de weinige fabrikanten wel
|
||||
een realistisch beeld van de maximale stroom.
|
||||
Voor de FET's voor deze Half-bridges is gekozen voor de EPC2307, Dit zijn GaNFET's in tegenstelling to de vaker gebruikte MOSFET's. MOSFET fabrikanten hebben een gewoonte om de maximale stroom te berekenen met perfecte koeling. Dit is dus niet realistisch haalbaar. Om achter te komen wat wel haalbaar is is een thermal analyses nodig, dit is grof weg gedaan voor een redelijk wat MOSFET's, maar geen enkel was geschik om de $50A$ te schakelen. EPC (Efiction Power Converter; de fabrikant van de EPC2307) is een van de weinige fabrikanten wel een realistisch beeld van de maximale stroom.
|
||||
|
||||
Om te bevestigen is een berekening vermaakt hoeveel de FET's aan vermogen
|
||||
verliezen in deze applicatie. Dit is gedaan met de volgende formule.
|
||||
Om te bevestigen is een berekening vermaakt hoeveel de FET's aan vermogen verliezen in deze applicatie. Dit is gedaan met de volgende formule.
|
||||
|
||||
$$
|
||||
P_{loss} = I^2R_{DS(on)} + \frac{UIt}{2} \cdot 2f_s
|
||||
@ -384,117 +162,53 @@ $f_s = 50 kHz$ (frequentie is gekozen omdat die buiten menselijk gehoor licht)
|
||||
|
||||
$P_{loss} = 26.2 W$.
|
||||
|
||||
Deze formule is erg pessimistisch, deze gaat uit van $100\%$ PWM terwel de
|
||||
uitgang een sinus is dus gemiddeld is het altijd $50\%$ en de schakelverliezen
|
||||
worden ook overschat. Voor meer informatie over deze berekening zie bijlagen
|
||||
Detailontwerp Stabilisatie hoofdstuk [Verliezen in de FET](#verliezen-in-de-fet)
|
||||
Deze formule is erg pessimistisch, deze gaat uit van $100\%$ PWM terwel de uitgang een sinus is dus gemiddeld is het altijd $50\%$ en de schakelverliezen worden ook overschat. Voor meer informatie over deze berekening zie bijlagen Detailontwerp Stabilisatie hoofdstuk [Verliezen in de FET](#verliezen-in-de-fet)
|
||||
|
||||
> Voor meer informatie over hoe de vermogens filtering is gedaan zie bijlagen
|
||||
Detailontwerp Stabilisatie hoofdstuk [Power Filtering](#power-filtering)
|
||||
> Voor meer informatie over hoe de vermogens filtering is gedaan zie bijlagen Detailontwerp Stabilisatie hoofdstuk [Power Filtering](#power-filtering)
|
||||
|
||||
##### Sensoren
|
||||
|
||||
Er zijn drie sensoren nodig, stroom meting, positie van de motor en de hoek van
|
||||
het voertuig.
|
||||
Er zijn drie sensoren nodig, stroom meting, positie van de motor en de hoek van het voertuig.
|
||||
|
||||
###### stroom meting
|
||||
|
||||
De stroom meting wordt gedaan met de ACS724xLCTR-50AB. Dit is een stroom meting
|
||||
IC die van $-50A$ tot $+50A$ kan meten. Deze komt tussen de motor en de uitgang
|
||||
van de half-bridges. Het is ook mogelijk om aan de lage FET in de half-bridge te
|
||||
meten met een shunt, maar omdat het nog niet heel duidelijk is hoe het FOC
|
||||
algoritme werkt, lijkt dit een makkelijkere manier om het algoritme te
|
||||
implementeren.
|
||||
De stroom meting wordt gedaan met de ACS724xLCTR-50AB. Dit is een stroom meting IC die van $-50A$ tot $+50A$ kan meten. Deze komt tussen de motor en de uitgang van de half-bridges. Het is ook mogelijk om aan de lage FET in de half-bridge te meten met een shunt, maar omdat het nog niet heel duidelijk is hoe het FOC algoritme werkt, lijkt dit een makkelijkere manier om het algoritme te implementeren.
|
||||
|
||||
Er is niet gekozen voor een shunt met een versterker, omdat er $200V$ op deze
|
||||
uitgang komt te staan. De versterkers die dit aankunnen zijn erg duur en de
|
||||
ACS724xLCTR-50AB wordt dan een goedkopere optie.
|
||||
Er is niet gekozen voor een shunt met een versterker, omdat er $200V$ op deze uitgang komt te staan. De versterkers die dit aankunnen zijn erg duur en de ACS724xLCTR-50AB wordt dan een goedkopere optie.
|
||||
|
||||
###### Hoek van de motor
|
||||
|
||||
de motor hoek is nodig voor FOC. Hoe nauwkeuriger deze sensor is hoe efficiënter
|
||||
FOC wordt. De AS5600 is zowel makkelijk te monteren als nauwkeurig zonder dat
|
||||
die elke keer bij het opstarten hoeft gekalibreerd hoeft te worden.
|
||||
de motor hoek is nodig voor FOC. Hoe nauwkeuriger deze sensor is hoe efficiënter FOC wordt. De AS5600 is zowel makkelijk te monteren als nauwkeurig zonder dat die elke keer bij het opstarten hoeft gekalibreerd hoeft te worden.
|
||||
|
||||
> Meer informatie waarom deze keuze is gemaakt, zie de bijlagen Detailontwerp
|
||||
Stabilisatie hoofdstuk Encoder
|
||||
> Meer informatie waarom deze keuze is gemaakt, zie de bijlagen Detailontwerp Stabilisatie hooftstuk Encoder
|
||||
|
||||
###### Hoek van het voertuig
|
||||
|
||||
Een MEMS Gyroscoop kan verandering in de hoek meten, deze is erg snel hierin
|
||||
maar bij afwijking verliest die de nul positie. Hiervoor is een combinatie
|
||||
gekozen met een MEMS-acceleratiemeter. Deze kan met de zwaartekracht meten
|
||||
zolang het voertuig niet te veel beweerd.
|
||||
Een MEMS Gyroscoop kan verandering in de hoek meten, deze is erg snel hierin maar bij afwijking verliest die de nul positie. Hiervoor is een combinatie gekozen met een MEMS-acceleratiemeter. Deze kan met de zwaartekracht meten zolang het voertuig niet te veel beweerd.
|
||||
|
||||
Om het makkelijk te maken is er gekozen voor de M5Stack IMU Pro Mini. Deze is
|
||||
makkelijk te monteren, omdat die al in een behuizing zit met montage gaten. Deze
|
||||
sensor komt met de BMI270 van Bosch die zowel een MEMS-acceleratiemeter als
|
||||
gyroscoop heeft.
|
||||
Om het makkelijk te maken is er gekozen voor de M5Stack IMU Pro Mini. Deze is makkelijk te monteren, omdat die al in een behuizing zit met montage gaten. Deze sensor komt met de BMI270 van Bosch die zowel een MEMS-acceleratiemeter als gyroscoop heeft.
|
||||
|
||||
> Meer informatie warom deze keuze is gemaakt, zie bijlagen Detailontwerp
|
||||
Stabilisatie hoofdstuk [Hoek Sensor](#hoek-sensor)
|
||||
> Meer informatie warom deze keuze is gemaakt, zie bijlagen Detailontwerp Stabilisatie hoofdstuk [Hoek Sensor](#hoek-sensor)
|
||||
|
||||
#### Productie en Testen Hardware
|
||||
#### Productie en Testen Motor Driver
|
||||
|
||||
De PCB en stencil zijn geproduceerd door JLCPCB en de componenten zijn geplaatst
|
||||
en in de reflow oven gegaan in het SMD-lab op Accademiplein.
|
||||
De PCB en stencil zijn geproduceerd door JLCPCB en de componenten zijn geplaatst en in de reflow oven gegaan in het SMD-lab op Accademiplein.
|
||||
|
||||
Na dat die uit de over kwam zijn er een aantal soleer balletjes weggehaald, twee
|
||||
soldeer bruggen weg gehaald bij een van de gate driver IC's en de
|
||||
microcontroller opnieuw met de hand erop geplast. De microcontroller had te veel
|
||||
tin op de grondpad aan de onderkant, waardoor deze omhoog kwam en de pinnen aan
|
||||
de zijkant boven de PCB zweefde onder contact.
|
||||
Na dat die uit de over kwam zijn er een aantal soleer balletjes weggehaald, twee soldeer bruggen weg gehaald bij een van de gate driver IC's en de microcontroller opnieuw met de hand erop geplast. De microcontroller had te veel tin op de grondpad aan de onderkant, waardoor deze omhoog kwam en de pinnen aan de zijkant boven de PCB zweefde onder contact.
|
||||
|
||||
Tot hoever er getest is werkt alles, de FET's schakelen en de PWM wordt correct
|
||||
gegenereerd. Helaas heb ik geen foto's van de scope kunnen maken, ik had beide
|
||||
handen vol met de probes en het lukte me niet om met mijn neus de scope te
|
||||
triggeren. Ik ga maandag 23 juni iemand om hulp vragen terwijl ik verder ga
|
||||
testen.
|
||||
|
||||
> [!todo]
|
||||
> latere testen toevoegen.
|
||||
|
||||
#### Software
|
||||
|
||||
De Software is geschreven in Rust, deze keuze is gemaakt door de beschikbaarheid an FOC library's.
|
||||
|
||||
Er is meer te vinden over de software inclusie onderbouwing waarom keuzes zijn gemaakt in bijlagen ...
|
||||
|
||||
> [!todo]
|
||||
> software in rust, git, software documentatie?
|
||||
|
||||
#### Advies
|
||||
|
||||
> [!todo]
|
||||
> upgrade to RP2350, RTIC (wegens I2C salve support), mcu aan de andere kant van de morot conn
|
||||
Tot hoever er getest is werkt alles, de FET's schakelen en de PWM wordt correct gegenereerd. Helaas heb ik geen foto's van de scope kunnen maken, ik had beide handen vol met de probes en het lukte me niet om met mijn neus de scope te triggeren. Ik ga maandag 23 juni iemand om hulp vragen terwel ik verder ga testen.
|
||||
|
||||
## Project Verloop
|
||||
|
||||
Aan het begin was het vooral lastig om duidelijk te maken wat de vereisten van
|
||||
beide opleidingen en tot een format te komen van het Plan van Aanpak en Pakket
|
||||
van eisen die voor beide opleidingen voldoet. Het is ons niet gelukt om tot een
|
||||
enkel Pakket van Eisen te komen, bij Automotive moet het in een Exel bestand.
|
||||
Dit is alleen lastig om te exporteren naar bestand dat geschikt is om te kunnen
|
||||
ondertekenen. Daarbij is het ook lastig om er onderbouwing van de eisen bij te
|
||||
zetten, dit is niet nodig voor Automotive.
|
||||
Aan het begin was het vooral lastig om duidelijk te maken wat de vereisten van beide opleidingen en tot een format te komen van het Plan van Aanpak en Pakket van eisen die voor beide opleidingen voldoet. Het is ons niet gelukt om tot een enkel Pakket van Eisen te komen, bij Automotive moet het in een Exel bestand. Dit is alleen lastig om te exporteren naar bestand dat geschik is om te kunnen ondertekenen. Daarbij is het ook lastig om er onderbouwing van de eisen bij te zetten, dit is niet nodig voor Automotive.
|
||||
|
||||
We hebben uiteindelijk ons eigen Pakket van Eisen gemaakt op onze manier en deze
|
||||
vertaalt naar een Exel bestand voor Automotive.
|
||||
We hebben uiteindelijk ons eigen Pakket van Eisen gemaakt op onze manier en deze vertaalt naar een Exel bestand voor Automotive.
|
||||
|
||||
Na deze twee documenten zijn er geen conflicten geweest tussen de eisen van
|
||||
Elektrotechniek en Automotive.
|
||||
Na deze twee documenten zijn er weinig 'conflicten' geweest tussen de eisen van Elektrotechniek en Automotive.
|
||||
|
||||
Een van de projectleden, Mohamed, is erg weinig komen opdagen. En heeft de drie
|
||||
waarschuwingen gekregen dat volgens de samenwerkingsovereenkomst dat wij hebben
|
||||
opgesteld en getekend (inc. Mohamed), waar na die uit de groep gezet kan worden.
|
||||
i.p.v. dit direct te doen hebben wij als groep samen met Joris Straver een
|
||||
gesprek gehad, wat er toe heeft geleden dat die de groep heeft verlaten. Rond
|
||||
deze tijd had Gryvon ook aangegeven dat die de groep verliet wegen te veel
|
||||
stress met andere vakken.
|
||||
Een van de projectleden, Mohamed, is erg weinig komen opdagen. En heeft de drie waarschuwingen gekregen dat volgens de samenwerkingsovereenkomst dat wij hebben opgesteld en getekend (inc. Mohamed), waar na die uit de groep gezet kan worden. i.p.v. dit direct te doen hebben wij als groep samen met Joris Straver een gesprek gehad, wat er toe heeft geleden dat die de groep heeft verlaten. Rond deze tijd had Gryvon ook aangegeven dat die de groep verliet wegen te veel stress met andere vakken.
|
||||
|
||||
Vanaf school week 4.1 waren we totaal nog maar met 5 personen i.p.v. 7. Dit
|
||||
heeft er tot geleid dat de aandrijving van de wielen hebben laten vallen en de
|
||||
motor driver voor de stabilisatie wat is uitgelopen.
|
||||
Vanaf school week 4.1 waren we totaal nog maar met 5 personen i.p.v. 7. Dit heeft er tot geleid dat de aandrijving van de wielen hebben laten vallen en de motor driver voor de stabilisatie wat is uitgelopen.
|
||||
|
||||
## bijlagen
|
||||
|
||||
|
||||
@ -1,60 +1,40 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# Softwareontwerp Sabilisatie
|
||||
|
||||
## inleiding
|
||||
|
||||
> [!TODO]:
|
||||
> schrijven
|
||||
|
||||
## FoC library
|
||||
|
||||
In C zijn er niet veel librarys voor FOC, de enige goede library die we hebben
|
||||
gevonden is [SimpleFOCproject](https://www.simplefoc.com/). Dit komt er in
|
||||
de buurt van een framework. In de video van de homepagina worden een aantal
|
||||
debuurd van een framework. In de video van de homepagina worden een aantal
|
||||
gemeenschaps projecten laten zien, waarvan meerdere een reactiewiel voor
|
||||
sabilisatie laat zien. Dit belooft veel goeds, toch is er gekozen om een andere
|
||||
library te kiezen. Het goed implementeren van een regel kring met de IMU vraagt
|
||||
library te kiezen. Het goed implementeren van een regel kring met de IMU vraagd
|
||||
veel kennis van hoe dit 'framework' werkt. Onze implementatie is niet exact het
|
||||
zelfde als die van deze gemeenschapsprojecten. Wij hebben dus de kennis nodig
|
||||
zelfde als die van deze gemeenschaps projecten. Wij hebben dus de kennis nogdig
|
||||
om deze code aan te passen.
|
||||
|
||||
Er is gekozen om te werken met de [Rust library FOC](https://lib.rs/crates/foc).
|
||||
Deze library is alleen een implementatie voor het FOC algaritme, waardoor er meer
|
||||
Deze library is alleen een implementatie voor het FOC algaritme, wadoor er meer
|
||||
flexibilitijd is hoe het systeem verder werkt. Dit kan dus ook verder
|
||||
geoptimaliseerd worden en meer ge configureerd. dat tweede is de grootste reden
|
||||
waarom voor deze library is gekozen. Er is behoefte aan een systeem dat aangepast
|
||||
warom voor deze library is gekozen. Er is behoefte aan een systeem dat aangepast
|
||||
kan worden naar wat later beter blijkt te zijn.
|
||||
|
||||
## Rust op RP2040
|
||||
|
||||
Rust voor microcontrollers is nog in een soort alpha versie. Het grootste deel is al stable, maar hier en daar zijn nog wat beperkingen. Vrijwel al deze
|
||||
beperkingen hebben een workaround. Het grootste voordeel is dat er een 'officele'
|
||||
Rust voor microcontrollers is nog in een sooft alpha versie. Het werkt voor het
|
||||
grootste deel, maar hier en daar zijn nog wat beperkingen. Vrijwel al deze
|
||||
beperkingen hebben een workaround. Het groote voordeel is dat er een 'officele'
|
||||
standaard is voor het HAL interface^[embeded-hal: [https://docs.rs/embedded-hal](https://docs.rs/embedded-hal)].
|
||||
Dit zorgt er voor dat er veel library's beschikbaar zijn die
|
||||
Dit maakt zorgd er voor dat er veel librarys voor IC's beschikbaar zijn die
|
||||
gewoon werken.
|
||||
|
||||
## Async
|
||||
|
||||
@ -1,19 +1,9 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Finley van Reenen"
|
||||
email: "0964590@hr.nl"
|
||||
name_short: "e.l.f. van Reenen"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
## Unit Testen Stabilisatie
|
||||
|
||||
### Voedingen
|
||||
@ -28,15 +18,15 @@ auther:
|
||||
2. sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
3. meet de uitgangen van de twee voedingen, vul de tabel hieronder in
|
||||
|
||||
| | $5V$ | $3.3V$ |
|
||||
| -------- | -------:| --------:|
|
||||
| minimaal | $4.5V$ | $3.0V$ |
|
||||
| maximaal | $5.5V$ | $3.6V$ |
|
||||
| gemeeten | $5.01V$ | $3.323V$ |
|
||||
| | $5V$ | $12V$ |
|
||||
| -------- | ------:| -------:|
|
||||
| minimaal | $4.5V$ | $11.5V$ |
|
||||
| maximaal | $5.5V$ | $12.5V$ |
|
||||
| gemeeten | | |
|
||||
|
||||
Geslaagd: ja
|
||||
Geslaagd:
|
||||
|
||||
opmergingen: in idel de er wordt $28mA$ aan stroom verbruikt vanaf de $12V$ voeding
|
||||
opmergingen:
|
||||
|
||||
### Microcontroller
|
||||
|
||||
@ -50,59 +40,49 @@ opmergingen: in idel de er wordt $28mA$ aan stroom verbruikt vanaf de $12V$ voed
|
||||
#### Procedure
|
||||
|
||||
1. sluit een ledje aan op een van de GPIO pinnen
|
||||
2. snel de voeding in op $12V$ met een stroom berensing van 150 mA
|
||||
3. sluit de $12V$ voeding aan op de $12V$ en GND ingnangen op de driver
|
||||
4. sluit de USB kabel aan op de computer (dit is veilig omdat de USB alleen verbonden is met ground, de _V+_ is floating)
|
||||
2. snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
3. sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
4. sluit de USB kabel aan op de computer (dit is veilig omdat de USB alleen verbonden is met ground, de V+ is floating)
|
||||
5. upload een blinky voorbeeld progamma met de GPIO ingesteld van de led
|
||||
6. bekijk of het ledje knippert
|
||||
6. bekijk of het lidje knipperd
|
||||
|
||||
Geslaagd: ja
|
||||
Geslaagd:
|
||||
|
||||
opmergingen: getest met een PWM signaal en osciloscoop i.p.v. een ledje.
|
||||
opmergingen:
|
||||
|
||||
### Half-brug
|
||||
|
||||
#### Benodigdheden
|
||||
|
||||
- als de microcontroller werkt:
|
||||
- $12V$ voeding als de voedingen werken, anders met een $5V$ en $3.3v$ voeding
|
||||
- $30V$ voor _V Motor_
|
||||
- computer met Arduino IDE geïnstalleerd
|
||||
- als de microcontoller werkt:
|
||||
- 12V voeding als de voedingen werken, anders met een 5V en 3.3v voeding
|
||||
- 30V voor V Motor
|
||||
- computer met Arduino IDE geinstaleerd
|
||||
- USB B kabel naar de computer
|
||||
- oscilloscope
|
||||
- ocsiloscoop
|
||||
- zo niet:
|
||||
- $10V$ voor _V motor_
|
||||
- 10V voor V motor
|
||||
- signaal generator met twee kanalen
|
||||
- oscilloscope
|
||||
- ocsioscoop
|
||||
|
||||
#### procedure
|
||||
|
||||
1. sluit de oscilloscope aan op een van de uitgangen van de drijver (er komt $30V$ op te staan, beruik de juiste probe; geen juiste probe bij de hand, zet de voeding voor _V motor_ wat lager)
|
||||
2. snel de voeding in op $12V$ met een stroom begrenzing van $150 mA$
|
||||
3. sluit de $12V$ voeding aan op de $12V$ en GND ingangen op de driver
|
||||
4. sluit de USB kabel aan op de computer (dit is veilig omdat de USB alleen verbonden is met ground, de _V+_ is floating)
|
||||
5. upload een test programma die de PWM aanstuurt voor de FET's
|
||||
- de PWM per half bridge zijn aangesloten op de a en b uitgangen van 1 timer per half brug. zorg dat een van de uitgangen geïnverteerd is en de twee vergelijk waardes zo zijn zodat er een korte dead time is. ze mogen nooit tegelijkertijd hoog zijn!
|
||||
6. bekijk het signaal op de oscilloscope
|
||||
1. sluit de ociloscoop aan op een van de uitgangen van de drijver (er komt 30V op te staan, beruik de juiste probe; geen juiste probe bij de hand, zelt de voeding voor V motor wa lager)
|
||||
2. snel de voeding in op 12V met een stroom berensing van 150 mA
|
||||
3. sluit de 12V voeding aan op de 12V en GND ingnangen op de driver
|
||||
4. sluit de USB kabel aan op de computer (dit is veilig omdat de USB alleen verbonden is met ground, de V+ is floating)
|
||||
5. upload een test progamma die de PWM aansuurt voor de FET's
|
||||
- de PWM per half bridge zijn aangesloten op de a en b uitganen van 1 timer per half brug. zorg dat een van de uitput geinverteerd is en de twee vergeleijk waardes zo zijn zodat er een korte dead time is. ze mogen nooit tegerlijk hoog zijn!
|
||||
6. bekijk het signaal op de osciloscoop
|
||||
7. herhaal de test voor alle drie de half bruggen
|
||||
|
||||
resultaat:
|
||||
|
||||
- brug a:
|
||||
|
||||

|
||||
|
||||
- brug b:
|
||||
|
||||

|
||||
|
||||
- brug c:
|
||||
|
||||

|
||||
|
||||
Geslaagd: ja
|
||||
|
||||
opmerkingen: Er is een klein beetje ringing, maar het lijkt nog niet te veel dat dit problemen kan veroorzaken.
|
||||
opmerkingen:
|
||||
|
||||
### IMU
|
||||
|
||||
|
||||
@ -1,25 +1,9 @@
|
||||
---
|
||||
sub_title: Superlight Personal Carrier
|
||||
tags:
|
||||
- kladjes
|
||||
- elektro
|
||||
- elektro/hr
|
||||
- elektro/hr/pee51
|
||||
auther:
|
||||
- name: "Chris Tan"
|
||||
email: "0992143@hr.nl"
|
||||
name_short: "c. Tan"
|
||||
- name: "Tijn Snijders"
|
||||
email: "1001829@hr.nl"
|
||||
name_short: "t. Snijders"
|
||||
- name: "Max Kappert"
|
||||
email: "1030682@hr.nl"
|
||||
name_short: "m. Kappert"
|
||||
- name: "Thomas Braam"
|
||||
email: "0989527@hr.nl"
|
||||
name_short: "t. Braam"
|
||||
tags: kladjes, elektro, elektro/hr, elektro/hr/pee51
|
||||
---
|
||||
|
||||
[parent](/tPb3Up1fQEuZ86yrJSkYRQ)
|
||||
|
||||
# unit testen Stuur systeem
|
||||
|
||||
## unit test controller
|
||||
|
||||
BIN
pdf/detailontwerp_stabilisatie.booklet.pdf
Normal file
BIN
pdf/detailontwerp_stabilisatie.pdf
Normal file
BIN
pdf/detailontwerp_stuursysteem.booklet.pdf
Normal file
BIN
pdf/detailontwerp_stuursysteem.pdf
Normal file
BIN
pdf/plan_van_aanpak.booklet.pdf
Normal file
BIN
pdf/plan_van_aanpak.pdf
Normal file
BIN
pdf/projectdocument.booklet.pdf
Normal file
BIN
pdf/projectdocument.pdf
Normal file
BIN
pdf/softwareontwerp_stabilisatie.booklet.pdf
Normal file
BIN
pdf/softwareontwerp_stabilisatie.pdf
Normal file
BIN
pdf/unittest_stabilisatie.booklet.pdf
Normal file
BIN
pdf/unittest_stabilisatie.pdf
Normal file
@ -1,49 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
server='https://live.kladjes.nl'
|
||||
main_index_id="tPb3Up1fQEuZ86yrJSkYRQ"
|
||||
|
||||
cli_url="https://raw.githubusercontent.com/hedgedoc/cli/refs/heads/master/bin/hedgedoc"
|
||||
HEDGEDOC_SERVER="$server"
|
||||
if [ ! -f "./hedgedoc" ]; then
|
||||
curl $cli_url -o "./hedgedoc"
|
||||
chmod +x "./hedgedoc"
|
||||
fi
|
||||
. ./hedgedoc --import
|
||||
|
||||
function download_cli() {
|
||||
if [ ! -f "$hd_cli" ]; then
|
||||
curl $cli_url -o "$hd_cli"
|
||||
chmod +x "$hd_cli"
|
||||
fi
|
||||
}
|
||||
|
||||
function get_md() {
|
||||
local note_id="$1"
|
||||
local out_path="$2"
|
||||
echo "get_md: '$note_id' '$out_path'"
|
||||
export_note --md "$note_id" "$out_path"
|
||||
}
|
||||
|
||||
function get_index() {
|
||||
local note_id="$1"
|
||||
local out_dir="$2"
|
||||
local index_file="$(mktemp)"
|
||||
|
||||
echo "get_index: '$note_id' '$out_dir'"
|
||||
|
||||
get_md "$note_id" "$index_file"
|
||||
# get all unsorted list line (`^- `) that have a link with lable ending with '.md'
|
||||
local index=$(cat "$index_file" | grep -e '^- \[[^\}]*\.md\]' | sed -e 's/^.*\[\(.*\)\](\(.*\))/\1=\2/')
|
||||
rm "$index_file"
|
||||
|
||||
for f in $index
|
||||
do
|
||||
local name="$(echo "$f" | sed -e 's/=.*$//')"
|
||||
local id="$(echo "$f" | sed -e 's/^.*=//' | tr -dc '[:alnum:]-_')"
|
||||
get_md "$id" "$out_dir/$name"
|
||||
done
|
||||
}
|
||||
|
||||
# mkdir -p "./out"
|
||||
get_index "$main_index_id" "./markdown"
|
||||
@ -1,50 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
server='https://live.kladjes.nl'
|
||||
main_index_id="tPb3Up1fQEuZ86yrJSkYRQ"
|
||||
|
||||
cli_url="https://raw.githubusercontent.com/hedgedoc/cli/refs/heads/master/bin/hedgedoc"
|
||||
HEDGEDOC_SERVER="$server"
|
||||
if [ ! -f "./hedgedoc" ]; then
|
||||
curl $cli_url -o "./hedgedoc"
|
||||
chmod +x "./hedgedoc"
|
||||
fi
|
||||
. ./hedgedoc --import
|
||||
|
||||
function get_md() {
|
||||
local note_id="$1"
|
||||
local out_path="$2"
|
||||
echo "get_md: '$note_id' '$out_path'"
|
||||
export_note --md "$note_id" "$out_path"
|
||||
}
|
||||
|
||||
function push_md() {
|
||||
local note_id="$1"
|
||||
local src_path="$2"
|
||||
echo "push_md: '$src_path' '$note_id'"
|
||||
import_note "$src_path" "$note_id"
|
||||
}
|
||||
|
||||
function get_index() {
|
||||
local note_id="$1"
|
||||
local src_dir="$2"
|
||||
local index_file="$(mktemp)"
|
||||
|
||||
echo "get_index: '$note_id' '$src_dir'"
|
||||
|
||||
get_md "$note_id" "$index_file"
|
||||
# get all unsorted list line (`^- `) that have a link with lable ending with '.md'
|
||||
local index=$(cat "$index_file" | grep -e '^- \[[^\}]*\.md\]' | sed -e 's/^.*\[\(.*\)\](\(.*\))/\1=\2/')
|
||||
rm "$index_file"
|
||||
|
||||
for f in $index
|
||||
do
|
||||
local name="$(echo "$f" | sed -e 's/=.*$//')"
|
||||
local id="$(echo "$f" | sed -e 's/^.*=//' | tr -dc '[:alnum:]-_')"
|
||||
push_md "$id" "$src_dir/$name"
|
||||
done
|
||||
}
|
||||
|
||||
user_login --email kladjes@finnvanreenen.nl
|
||||
|
||||
get_index "$main_index_id" "./markdown"
|
||||