I do not recommend using event tick unless it is absolutely essential for the function. Tick fires every frame, and it sounds like you have multiple functions running off ticks to update something that the user will never need to be that precise in timing. Multiple functions using tick events can VERY quickly add up and reduce performance.
My recommendation would be to use delay loops with gates or bools to update your “charge” status. For example, you could use a delay to check every .5 second and update the charge status, this would fire every half second, rather than 30-60 times a second, and the user is unlikely to need to have the charge status updated more often than that.